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

时间:2013-03-30 08:34:39

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

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

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;
}  

输入为多行,如下所示:

93859312
2635577168
2929619024
312396812
3019231016
3139200356
...

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

183

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

1 个答案:

答案 0 :(得分:8)

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

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

int可以表示的最大值是2,147,483,647: What is the maximum value for an int32?

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