64,688
社区成员
发帖
与我相关
我的任务
分享
wcout.imbue(std::locale("chs"));
wfstream file = wfstream(L"d://asd.txt");
wstring str;
file>>str;
wcout<<str<<endl;
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
void main()
{
wcout.imbue(locale("chs"));
wstring wstr;
wifstream file(L"1.txt");
file.imbue(locale("chs"));
wstring str;
file >> str;
wcout << str << endl;
}
#include <fstream>
#include <string>
#include <iostream>
#include <locale>
#include <codecvt>
using namespace std;
void main()
{
wcout.imbue(locale("chs"));
wstring wstr;
wifstream file(L"1.txt");
//0x10ffff是默认参数不用管。windows上说的Unicode实际上是UTF-16 LE,所以这里用little_endian指明是UTF16的小端序编码方式
//consume_header告诉codecvt需要自动处理BOM,即TXT文件起始处的头两个字节0xFF 0xFE,用来标识是什么类型编码的标记
file.imbue(locale(locale("chs"), new codecvt_utf16<wchar_t, 0x10ffff, (codecvt_mode)(little_endian | consume_header)>));
wstring str;
file >> str;
wcout << str << endl;
}