最近我想找到std::wcout
的一般解决方案,以便它可以打印出所有unicode字符串。但是,在谷歌上四处寻找之后,我找不到有用的东西。我被困在这里,任何人都可以帮助我吗?
_setmode(_fileno(stdout), _O_U16TEXT);
无法按预期工作。
以下是我目前的代码段:
auto previousMode = _setmode(_fileno(stdout), _O_U16TEXT);
std::wifstream wifs;
wifs.imbue(std::locale(wifs.getloc(), new std::codecvt_utf16<wchar_t, 0x10ffff,
std::codecvt_mode(std::little_endian | std::consume_header)>));
wifs.open(L"F:\\重要网址.txt", std::ios_base::binary);
std::wstring line;
std::getline(wifs, line);
wcout << line << endl;
wifs.close();
wcout << endl;
cout << "∦" << endl;
std::wofstream wofs;
wofs.imbue(std::locale(wifs.getloc(), new std::codecvt_utf16<wchar_t, 0x10ffff,
std::codecvt_mode(std::little_endian | std::consume_header)>));
wofs.open(L"F:\\iMoney.txt", std::ios_base::binary | std::ios_base::ate);
wofs << line << endl;
wofs.close();
//it's important to restore mode to previous, otherwise std::cout will cause crash
_setmode(_fileno(stdout), previousMode);
这里有一些符号可以在发布之前测试你的洗脱液:
∀, ∁, ∂, ∅, ∰, ∵, ∺, ⊙, ⋾, ⋻, ⋱, ⋭, ⋣, ⋧
阿拉伯: لطيفةالطقساليوم