神奇,如下的代码竟然工作了:
#include <locale>
#include <codecvt>
#include <iostream>
//#include <string>
using namespace std;
int main()
{
locale myloc( "zh_CN.UTF-8" );
locale inloc(myloc, new codecvt_utf8<wchar_t>);
wcin.imbue(inloc); //这一行才能让中文字符正常输入
wcout.imbue( myloc );
wchar_t wstr[100];
//wstring wstr;
wcout << L"开始输入:";
wcin >> wstr;
wcout << wstr << endl;
return 0;
}
还是很好奇 wcin 在各平台上的默认行为?
看起来,macOS 上的读入方式始终是字节流。
【 在 here080 (hero080) 的大作中提到: 】
: std::locale a("en_US.UTF-8");
: std::locale b(a, new std::codecvt_utf8<wchar_t>);
: 大概这样子吧。
: ...................
--
修改:easior FROM 222.186.175.*
FROM 61.155.142.*