ifstream::read 在 ASCII 26 处失败
Posted
技术标签:
【中文标题】ifstream::read 在 ASCII 26 处失败【英文标题】:ifstream::read fails at ASCII 26 【发布时间】:2012-06-22 23:02:36 【问题描述】:这个问题困扰了我很久。比如代码
ifstream in;
char temp;
int a;
in.open ("Random.txt");
for (a = 0;a < 10000;a++)
in.read (&temp, 1);
in.close ();
在ifstream
遇到替代字符 (ASCII = 26) 之前工作正常。然后,对于所有后续字符,ifstream::read
给了我temp = -1
。我真的不希望这种情况发生,而是希望它继续从文件中读取字符而不是-1
。我做错了什么?
【问题讨论】:
不是答案,而是评论... 26 不是文件结尾 (EOF) 的 ASCII 字符吗?我会看看运行时。 是的...我完全忘记了这一点。但是我的程序读入的数据包含各种数据,所以当我读入 26 时,它并不是文件的结尾。 【参考方案1】:您需要以二进制模式打开流。由于历史原因,Windows 上的文本模式会将 Control-Z (ASCII 26) 视为文件的结尾。
还有更多详情in this earlier answer of mine。
【讨论】:
是的,这解决了我的问题!谢谢你。我现在不能接受你的回答,但如果允许,我会在 7 分钟内接受。以上是关于ifstream::read 在 ASCII 26 处失败的主要内容,如果未能解决你的问题,请参考以下文章