我真的很沮丧。我正在尝试读取包含以下内容的 txt 文件:
Arenas
Edward
239924731
2525976612
Autry
Richard
527646269
6028236739
使用此代码:
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
int main(int argc, const char * argv[])
{
string line;
string last, first;
int uin, number;
ifstream phoneBook;
phoneBook.open("PhoneBook.txt");
while (!phoneBook.eof()) {
phoneBook >> last >> first >> uin >> number;
cout << last << ", " << first << ", " << uin << ", " << number <<endl;
}
return 0;
}
输出将永远是相同的联系人
Arenas, Edward, 239924731, 2147483647
Arenas, Edward, 239924731, 2147483647
Arenas, Edward, 239924731, 2147483647
Arenas, Edward, 239924731, 2147483647
Arenas, Edward, 239924731, 2147483647
我也尝试过这个版本的 while 循环:
while (phoneBook >> last >> first >> uin >> number) {
cout << last << ", " << first << ", " << uin << ", " << number <<endl;
}
由于某些原因,编译器甚至不进入循环。它只会跳转到 return 0;
最佳答案
您的 number
值太大,无法放入四字节有符号整数。最大值是 2147483647 (2^31 - 1),这就是为什么最后会打印出来。 (您没有问那个问题;我不知道我自己是如何注意到它的!)
但我还想知道每条记录之间的额外行。我发现this question讨论 fstream 和分隔符。我想知道它是否卡在空白行,什么也不读取,然后只输出 last
、first
、uin
和数字
。
关于C++ fstream 继续读取相同的前 5 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19330453/