我试图将UTF-8字符串写入UTF-8编码的文件,然后读取所说的数据,但是我无法使其正常工作。
下面的代码是我的代码。我正在通过MinGW g ++ 6.3.0版运行它
#include <fstream>
#include <codecvt>
int main() {
std::locale locale = std::locale(std::locale(), new std::codecvt_utf8_utf16<wchar_t>);
std::wofstream ofs("./data1.txt");
ofs.imbue(locale);
ofs << L"abc123" << std::endl;
ofs.close();
std::wifstream ifs("./data1.txt");
ifs.imbue(locale);
std::wstring content;
std::getline(ifs, content);
ifs.close();
ofs.open("./data2.txt");
ofs.imbue(locale);
ofs << content << std::endl;
ofs.close();
return 0;
}
如预期的那样,文件data1.txt
的内容为abc123
。但是,data2.txt
的内容是愀戀挀㈀㌀
,这显然不是所期望的。我猜这是某种语言环境问题,但我无法弄清楚哪里出了问题。