ЕслиКак конвертировать зЬй: wstring в StD :: вектор <wchar_t>
std::wstring word = L"xxxxxxx";
Тогда как сделать следующее преобразование?
std::vector<wchar_t> chars = word;
ЕслиКак конвертировать зЬй: wstring в StD :: вектор <wchar_t>
std::wstring word = L"xxxxxxx";
Тогда как сделать следующее преобразование?
std::vector<wchar_t> chars = word;
Просто инициализировать его с парой итераторов:
std::vector<wchar_t> chars(word.begin(), word.end());
выше не добавит нулевой терминатор (но если строка содержит один, он будет скопирован). Если вы хотите, инициализировать вектор с парой указателей на нижележащие данные строки вместо:
std::vector<wchar_t> chars(word.c_str(), word.c_str() + word.size() + 1);
Не забудьте добавить 1 для нулевого терминатора, в противном случае эффект будет таким же, как и в первом примере.
Существует способ создать его за один раз, включая нулевой терминатор, используя c_str() или data() из wstring. (В C++ 11 оба гарантированы как завершающие нуль), а затем добавление size() + 1 для конечной позиции, также гарантированное корректное поведение.
Таким образом:
std::vector<wchar_t> chars(word.c_str(), word.c_str() + word.size() + 1);
(или использовать данные() вместо c_str(), но только C++ 11 и далее)
Что считается правильным поведением на этом сайте? Мой ответ менее корректен, чем ваш, если вы хотите использовать нулевой терминатор, но если я его отредактирую, чтобы включить ваши, будет ли это правильным занятием или плагиатом/воровством? – krzaq
Правильное поведение на этом сайте - попытаться представить ответ таким образом, что будущий человек, пришедший на сайт с тем же вопросом, сможет найти решение. Речь идет не о нас и о нашей репутации (что-то я перестала заботиться, как только я добрался до 20K) – CashCow
Хорошо, спасибо за объяснение. – krzaq
Возможный дубликат [Как преобразовать вектор к WCHAR \ _t \ * \ *?] (http://stackoverflow.com/questions/17916842/how-to-convert-a-vectorwstring-to-a-wchar-t) –
Я не думаю, что это жизнеспособная повторяющаяся цель. – krzaq
@Anjan Это совершенно другой вопрос. – juanchopanza