Каков самый простой способ преобразовать массив символов в массив WCHAR?
Вопрос
В моем коде я получаю const char array
как следующее:
const char * myString = someFunction();
Теперь я хочу постобработать его как wchar array
поскольку функции, которые я использую впоследствии, не обрабатывают узкие строки.
Какой самый простой способ достичь этой цели?
В конце концов MultiByteToWideChar?(Однако, поскольку это узкая строка, которую я получаю в качестве входных данных, в ней нет многобайтовых символов =>, вероятно, не самое красивое решение)
Решение
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];
Другие советы
MultiByteToWideChar будет работать, если вы не используете расширенные символы в узкой строке.Если это простая буквенно-цифровая строка, она должна работать нормально.
вы также можете посмотреть mbstowcs, который немного менее запутан, но не предлагает такого же уровня контроля.
Не связан с StackOverflow