std :: cout不能打印出阿拉伯语字符和一些数学符号

时间:2014-04-27 15:04:17

标签: c++ windows api stl

最近我想找到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);

这里有一些符号可以在发布之前测试你的洗脱液:

∀, ∁, ∂, ∅, ∰, ∵, ∺, ⊙, ⋾, ⋻, ⋱, ⋭, ⋣, ⋧

阿拉伯: لطيفةالطقساليوم

0 个答案:

没有答案