在C++中逐行讀取Unicode文件的正確方法是什麼?逐行讀取Unicode文件C++
我想讀取由Windows記事本保存爲Unicode(LE)的文件。
假設文件在單獨的行上只包含字符A和B.
在讀取由字節的文件字節, 我看到後面的字節序列(十六進制):
FE FF 41 00 0D 00 0A 00 42 00 0D 00 0A 00
SO 2字節BOM, 2字節'A',2字節CR,2字節LF,2字節'B',2字節CR,2字節LF。
我嘗試使用下面的代碼讀取文本文件:
std::wifstream file("test.txt");
file.seekg(2); // skip BOM
std::wstring A_line;
std::wstring B_line;
getline(file,A_line); // I get "A"
getline(file,B_line); // I get "\0B"
我用得到相同的結果>>操盤函數getline
file >> A_line;
file >> B_line;
看來,單字節CR字符 僅作爲單個字節使用。 或CR NULL LF正在被使用,但不是高字節的NULL。 我希望在文本模式下的wifstream會讀取2字節的CR和2字節的LF。
我在做什麼錯? 爲了解析新行,人們似乎不應該在二進制模式下逐字節讀取文本文件 。