我一直在尝试使用C ++在BOM和UTF16 LE之间进行转换,以便在Windows上正确输出字符,而无需更改终端的字体。
我尝试更改代码页,但它们没有用。
我有2个问题,
例如,
wcout << L"\u00A0" << endl;
使用代码页850时,此代码在Windows上输出字母á
。如何在Windows上将变量替换为"\u00A0"
以将普通字符串转换为宽字符?
我想要的是:
wcout << Lsome_variable << endl;
我意识到它不是有效的c ++语法,但有谁知道我怎么做到这一点?或者,如果有更好的方法吗?
答案 0 :(得分:7)
如评论中所述,标准库现在提供诸如std::wstring_convert之类的内容(以及该页面的另请参阅部分中的其他函数/类)。
由于您使用的是Windows,WinAPI还具有转换功能。在这种情况下,您将寻找可用于将UTF-8转换为UTF-16的MultiByteToWideChar。
在这些选项之间,某些内容应该适合您的用例。一般来说,您永远不需要编写自己的转化地图。