Какой самый простой способ преобразовать массив символов в массив WCHAR? - PullRequest
0 голосов
/ 04 декабря 2009

В моем коде я получаю const char array, как показано ниже:

const char * myString = someFunction();

Теперь я хочу постобработать его как wchar array, так как функции, которые я использую впоследствии, не обрабатывают узкие строки.

Какой самый простой способ достичь этой цели?

В конце концов MultiByteToWideChar? (Однако, поскольку это узкая строка, которую я получаю в качестве входных данных, в ней нет многобайтовых символов => вероятно, не самое красивое решение)

Ответы [ 2 ]

3 голосов
/ 04 декабря 2009
const char * myString = someFunction();
const int len = strlen(myString);
std::vector<wchar_t> myWString (len);
std::copy(myString, myString + len, myWString.begin());
const wchar_t * result = &myWString[0];
3 голосов
/ 04 декабря 2009

MultiByteToWideChar будет работать, если вы не используете расширенные символы в вашей узкой строке. Если это простая буквенно-цифровая строка, то она должна работать нормально.

Вы также можете взглянуть на сообщения mbstowcs, которые немного менее запутанны, но не обеспечивают такой же контроль.

...