最近我在将一个Windows应用程序移植到Linux时遇到了问题,因为这些平台之间的大小差异。我尝试使用编译器开关,但打印这些字符时出现了问题(我推测GCC 认为所有都是32位)。
所以我的问题是:有没有什么好方法可以(w)cout ? 我之所以问是因为它不能工作,我被迫将其强制转换为:
cout << (wchar_t) c;
看起来不是什么大问题,但它让我感到烦恼。
最近我在将一个Windows应用程序移植到Linux时遇到了问题,因为这些平台之间的大小差异。我尝试使用编译器开关,但打印这些字符时出现了问题(我推测GCC 认为所有都是32位)。
所以我的问题是:有没有什么好方法可以(w)cout ? 我之所以问是因为它不能工作,我被迫将其强制转换为:
cout << (wchar_t) c;
看起来不是什么大问题,但它让我感到烦恼。
尝试一下这个:
#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';
}
gcc
与#include <codecvt>
能够正常工作,那就太好了 ;) - Paweł Prażak