Лучший способ присоединиться и сохранить строку символов со строкой wchar_t в C ++ - PullRequest
1 голос
/ 22 февраля 2011

C ++ новичок здесь.

У меня есть 3 строки

const char section1[] = {0x12, 0x34, 0x56, 0x78};
std::wstring section2 = L"section2";
const char section3[] = {0x23, 0x45, 0x67, 0x89};

И мне нужно объединить их с результатом, который выглядит как

{0x12, 0x34, 0x56, 0x78, 0x73, 0x00, 0x65, 0x00, 0x63, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f 0x6e, 0x00, 0x32, 0x00, 0x23, 0x45, 0x67, 0x89, 0x89 1008 *

Итак, два бита ASCII с секцией Unicode, расположенной посередине. Какой лучший способ присоединиться к ним и какой тип данных лучше всего хранить для вывода в файл?

1 Ответ

2 голосов
/ 22 февраля 2011
std::vector<unsigned char> Buffer;

for (size_t i = 0; i < sizeof(section1); ++i)
  Buffer.push_back((unsigned char) section1[i]);

for (size_t i = 0; i < section2.size(); ++i) {
  unsigned short u = (unsigned short) section2[i];
  Buffer.push_back((unsigned char) (u >> 8));
  Buffer.push_back((unsigned char) (u & 0xFF));
}

for (size_t i = 0; i < sizeof(section3); ++i)
  Buffer.push_back((unsigned char) section31[i]);

Вы также можете использовать memcpy для разделов 1 и 3, и если вы делаете предположения о порядке байтов для раздела 2.Вышеуказанные циклы должны быть легко читаемыми и понятными.

Когда вы закончите, вы просто пишете байты Buffer.size (), начиная с & Buffer [0]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...