std :: ifstream开头的字符是什么?
问题描述:
我打开一个文本文件:std :: ifstream开头的字符是什么?
std::ifstream in("1.txt");
if(in.good())
{
char ch = 0;
while(!in.eof())
{
in >> ch;
std::cout << std::hex << (short)ch << " ";
}
}
而且我一开始接收三个奇怪的字符:FFEF FFBB FFBF。它是什么?
答
它看起来像一个BOM标记。 BOM标记在那里要注意你的数据是UTF-8。请注意0处理像ASCII这样的东西。
最好在这里小心:因为你正在像ASCII一样处理它,当你遇到一个奇怪的字符时可能会出错。
有关BOM标记的更多详细信息,请参阅https://en.wikipedia.org/wiki/Byte_order_mark。
请阅读[为什么使用eof不好](http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong) –