NoS*_*tAl 11 printing cout wchar-t c++11 char16-t
最近我将Windows应用程序移植到Linux时出现问题,因为wchar_t这些平台之间存在大小差异.我试图使用编译器开关,但打印这些字符时出现问题(我认为GCC wcout认为所有wchar_t都是32位).
所以,我的问题是:有一个很好的方法(w)cout char16_t吗?我问,因为它不起作用,我被迫将其投射到wchar_t:
cout << (wchar_t) c;
Run Code Online (Sandbox Code Playgroud)
这似乎不是一个大问题,但它让我烦恼.
尝试一下:
#include <locale>
#include <codecvt>
#include <string>
#include <iostream>
int main()
{
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t> > myconv;
std::wstring ws(L"Your UTF-16 text");
std::string bs = myconv.to_bytes(ws);
std::cout << bs << '\n';
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6167 次 |
| 最近记录: |