想逐行阅读,但fstream只读第一行

mah*_*ood 1 c++ fstream visual-studio-2010

一个非常简单的程序:逐行读取文件(每行包含整数)然后执行某些操作并将输出写入文件.

int main()
{
  ifstream fin ("f:\in.txt");
  ofstream fout ("f:\out.txt");

  int a;
  while (fin >> a) {
      int b = (a >> 6) & 255;
      fout << b << endl;
  }
  return 0;
}  
Run Code Online (Sandbox Code Playgroud)

输入为多行,如下所示:

93859312
2635577168
2929619024
312396812
3019231016
3139200356
...
Run Code Online (Sandbox Code Playgroud)

while循环只迭代一次!! 和输出只包含

183
Run Code Online (Sandbox Code Playgroud)

这对应于第一个输入行.为什么???

mad*_*tya 8

第一个之后的数字大于int可以表示的数字.

而不是int a;,使用long long int a;

最大的价值不是一个int可以代表为2,147,483,647: 什么是一个Int32的最大值?

你的第一个值小于此值,但你的第二个值不是.因此(fin >> a)失败(即不是真的),并且你的程序退出while循环.