C++ C++;fstream是否继续读取相同的前5行?
我真的很沮丧。我正在尝试读取包含以下内容的txt文件:C++ C++;fstream是否继续读取相同的前5行?,c++,file-io,while-loop,ifstream,file-pointer,C++,File Io,While Loop,Ifstream,File Pointer,我真的很沮丧。我正在尝试读取包含以下内容的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[]) {
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;
}
我还尝试了这个版本的while循环:
while (phoneBook >> last >> first >> uin >> number) {
cout << last << ", " << first << ", " << uin << ", " << number <<endl;
}
while(电话簿>>上次>>第一次>>uin>>号码){
cout可能存在不同类型的错误。使用的最佳方法是ios::good
:
while (!phoneBook.good()) {
您的数字
值太大,无法放入一个四字节有符号整数中。该值的最大值为2147483647(2^31-1),这就是为什么最后打印出来的原因。(您没有问这个问题;我不知道自己是如何注意到的!)
我想知道的是,在每条记录之间有一条额外的线。我发现讨论了<代码> fStase s和分隔符。我想知道它是否被困在空白行上,什么也不读,然后只输出相同的值:<代码>最后<代码>,<代码>第一< /代码>,<代码> uin < /代码>,和<代码>编号<代码>。.我尝试了这个,但没有效果。它只循环了一次并打印了一个联系人。显然,它在第一次联系人时打印出来的效果很好。问题是while循环。它没有按预期运行!我在您评论时编辑了我的答案。(另外,您可能希望使用long int
作为number
变量。谢谢!我没有注意到这一点。另外,通常最好将电话号码存储为文本而不是整数。如果它以0开头呢?
while (!phoneBook.good()) {