我见过很多线程,但是没有给出的解决方案对我有用,因此,如果有人可以提供一些很好的信息,我正在读取unicode文件并使用getline我尝试逐行扫描,但随后它将扫描整个文件,因为对象是字符串,不允许我在getline中放置分隔符。并只问我无法满足要求的wchar_t。(\ 0在我以二进制模式读取时不起作用),因此下面是代码段平台:Windows,Visual Studio 2010 Unicode编码:UTF 16
wifstream fin("profiles1.prd", ios_base::binary); //open a file
wofstream fout("DXout.txt",ios_base::binary); // this dumps the parsing ouput
fin.imbue(std::locale(fin.getloc(),new std::codecvt_utf16<wchar_t, 0x10ffff, std::consume_header>));
fout.imbue(std::locale(fin.getloc(),new std::codecvt_utf16<wchar_t, 0x10ffff, std::consume_header>));
wstring stream;
getline(fin,stream);
我希望这是您要寻找的:
fin.imbue(std::locale(fin.getloc(), new std::codecvt_utf16<wchar_t, 0x10ffff,
std::codecvt_mode(std::little_endian|std::consume_header)>);
Windows是低端的,因此要跳过BOM和注入utf16,您需要通过发明一种新的转换模式将其打入肠胃。
希望它可以帮助您。我把写作的一面留给你。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句