3

这个问题困扰我很久了。例如,代码

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. 我做错了什么?

4

1 回答 1

9

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

我的这个较早的答案中有更多细节。

于 2012-06-22T23:08:52.590 回答