【发布时间】:2013-12-22 02:02:05
【问题描述】:
我已经看到了很多线程,但没有一个给出的解决方案对我有用,所以如果有人能提出一些建议,那就太好了 我正在读取 unicode 文件并使用 getline 我尝试逐行扫描,但随后它会扫描整个文件,因为对象是 wstring 它不允许我在 getline 中放置分隔符。并且只询问我无法放入分隔符的 wchar_t。 (\0 不起作用,因为我正在以二进制模式阅读)所以下面是代码 sn-p 平台: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);
【问题讨论】:
-
文件是否包含换行符?格式正确吗?
-
@JoachimPileborg 是的文件有多行,你的意思是什么正确的格式?我有一个简单的 unicode 文本文件,里面有多行。
-
“正确格式”我的意思是你确定换行符是 UTF-16 格式,而不仅仅是普通的单字节
'\n'? -
@JoachimPileborg 是的,输入文件以 UTF 16 格式编码
标签: c++ string unicode getline