C ++ Unicode Issue

У меня небольшие проблемы с обработкой юникод-преобразований.

Следующий код выводит это в мой текстовый файл.
ЗДРАВСТВУЛТЕ ?? вывода

std::string test = "HELLO";
std::string output;
int len = WideCharToMultiByte(CP_OEMCP, 0, (LPCWSTR)test.c_str(), -1, NULL, 0, NULL, NULL);
char *buf = new char[len];
int len2 = WideCharToMultiByte(CP_OEMCP, 0, (LPCWSTR)test.c_str(), -1, buf, len, NULL, NULL);
output = buf;
std::wofstream outfile5("C:\\temp\\log11.txt");
outfile5 << test.c_str();
outfile5 << output.c_str();
outfile5.close();

Но, как вы можете видеть, вывод — это просто преобразование юникода из тестовой переменной. Как это возможно?

0

Решение

Проверьте правильность LEN после первого измерительного вызова. В общем, вы не должны приводить test.c_str () к LPCWSTR. ‘Test’ как есть ‘char’-string, а не ‘wchar_t’-wstring. Вы можете привести его к LPCSTR — обратите внимание, что буква W отсутствует. WinAPI имеет различие между этим. Вы действительно должны использовать wstring если вы хотите сохранить в нем Widechars .. Да, после перечитывания кода, test должно быть wstring, тогда вы можете безопасно привести его к LPCWSTR.

1

Другие решения

после прочтения
Ссылка на строку Microsoft

Я изменился

std::string test = "HELLO";

в

std::wstring test = L"HELLO";

И строка была выведена правильно, и я получил

ПРИВЕТ ПРИВЕТ

0

По вопросам рекламы [email protected]