C++ 以二进制形式读取文本文件并在控制台中显示
Posted
技术标签:
【中文标题】C++ 以二进制形式读取文本文件并在控制台中显示【英文标题】:C++ Reading text file as binary and show it in console 【发布时间】:2012-01-11 00:53:17 【问题描述】:我尝试将一个文本文件作为二进制文件读取,然后在控制台应用程序中呈现。 我得到了下一个结果:http://pastebin.com/gubYpAVZ
我在质疑:“为什么我有这样的符号,而我在文本文件中没有?” ,如果我在记事本中打开它 - 我只会看到“Hello World!”仅此而已...其他符号是什么???
代码如下:
ifstream in("C:\\dev\\1.txt", ios::in | ios::binary);
list<int> mylist1;
list<int>::iterator it;
while(!in.eof())
mylist1.push_back(in.get());
;
for(it = mylist1.begin(); it != mylist1.end(); it++)
cout << *it << " -> " << (char)*it << endl;
;
in.close();
最好的问候,
【问题讨论】:
oops...还没学过格式化文本,list在哪里,泛型是:list一种可能是文件包含 Unicode 字符,每个字符可能有多个字节。开头的一些字符值看起来像是BOM (byte order mark) 的一部分。特别是 239, 187, 191 (0xef, 0xbb, 0xbf) 似乎表示一些 UTF-8 数据。
【讨论】:
@AndreasMagnusson:我可能错过了明显的......但我不确定你指的是什么。循环肯定是一团糟(它为每个读取的字符打印整个字符集......但它似乎仍然在拾取 BOM)。 已更改代码,运行良好!谢谢(更新版本),但我有前三个符号:239 -> я 187 -> ╗ 191 -> ┐ @MarkWilkins:是的,你是对的。我假设操作员想知道为什么他的输出如此混乱,而不仅仅是打印Hello World!
但他看到的 weird 字符很可能是 BOM,尤其是因为他使用记事本创建文件。
@user1131997:这些是指示文件是 UTF-8 的字节顺序标记。如果所有字符值都小于整数值 127,它们将只占用 UTF-8 中的单个字节。如果您使用记事本创建文件,则可以将其另存为 ANSI(另存为对话框中应该有一个编码选项)。以上是关于C++ 以二进制形式读取文本文件并在控制台中显示的主要内容,如果未能解决你的问题,请参考以下文章