Я уверен, что этот вопрос задают много, но я просто хочу убедиться, что нет лучшего способа сделать это.C string to wide C string
В принципе, у меня есть const char *, который указывает на строку C с нулевым завершением. У меня есть другая функция, которая ожидает, что const wchar_t * указывает на строку с одинаковыми символами.
на некоторое время, я пытался сделать это следующим образом:
size_t newsize = strlen(myCString) + 1;
wchar_t * wcstring = new wchar_t[newsize];
size_t convertedChars = 0;
mbstowcs_s(&convertedChars, wcstring, newsize, myCString, _TRUNCATE);
delete[] wcstring;
Мне нужно сделать эти преобразования во многих местах, так как я имею дело с 3-библиотеками, которые ожидают один или другой. Это рекомендуемый способ сделать это?
Это сильно зависит от предполагаемого кодирования 'сопзИте полукокс *' строки (которая может быть UTF-8, ISO-Latin-1, KOI -8, ...). Вы должны знать это кодирование. Вас может заинтересовать библиотека http://www.gnu.org/software/libiconv/. –
Ты по существу на правильном пути. Вы можете получить правильный размер цели, выполнив сначала 'mbstowcs' с нулевым указателем. Не забудьте запустить 'std :: setlocale (" ");' в начале вашей программы. –