ifstream :: read在ASCII 26处失败

时间:2012-06-22 23:02:37

标签: c++ visual-studio-2010 visual-c++ ascii visual-c++-2010

这个问题长期困扰着我。例如,代码

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读取字符。我做错了什么?

1 个答案:

答案 0 :(得分:9)

您需要以二进制模式打开流。由于历史原因,Windows上的文本模式将把Control-Z(ASCII 26)视为文件的结尾。

还有更多详情in this earlier answer of mine