c++ - 想逐行阅读,但 fstream 只读第一行

标签 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

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

最佳答案

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

代替int a;,使用long long int a;

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

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

关于c++ - 想逐行阅读,但 fstream 只读第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15716610/

相关文章:

c# - 在 Visual Studio 中将控件绑定(bind)到 DataGrid 会生成对象引用错误

c++ - 无法输出到 eat、out 或 text,但可以将数据附加到输入文件,

c++ - 读取整个文件,然后在同一个 std::fstream 中覆盖所有文件

c++ - QTableView clearSelection 失败,出现 ASSERT : "!isEmpty()" in file/usr/include/qt4/QtCore/qlist. h,第 282 行

c++ - 为什么 Main 函数上的 Sleep() 会停止所有线程?

c++ - 如何在 visual studio 中运行单个 google 测试?

visual-studio-2008 - 如何更改 Visual Studio 2008 的默认工具路径?

c++ - 当底层文件取消链接时,fstream 对象会发生什么?

c++ - Mellanox 上的 DPDK IPv4 流过滤

c++ - 谷歌测试 : how to check a global C (C++) function was called