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