我用C ++编写一个程序,必须处理unicode字符。 主要问题是我使用算法,我需要解析我的s / wstrings char by char :
std::wstring word = L"Héllo"
for (auto &e : word)
// doing something with e
但如果我这样做:
std::wstring word = L"Héllo"
for (auto &e : word)
std::wcout << e << std::endl;
我得到了这个输出:
H
?
l
l
o
我做错了吗?
请注意,当我使用word
时,std::wcout << word;
会正确打印。
编辑@Ben Voigt
以下是std::wcout << std::hex << std::setw(4) << (int)e << L" " << e << L'\n';
:
48 H
e9 �
6c l
6c l
6f o
答案 0 :(得分:0)
要按照您的意图打印字符,请尝试以下操作:
#include <string>
#include <iostream>
#include <fcntl.h>
#include <io.h>
int _tmain(int argc, _TCHAR* argv[])
{
std::wstring word = L"Héllo";
_setmode(_fileno(stdout), _O_U16TEXT);
for (auto &e : word)
std::wcout << e << std::endl;
return 0;
}
此帖中的更详细说明:Why are certain Unicode characters causing std::wcout to fail in a console app?