C++流继续读取相同的前 5 行

C++ fstream keep reading the same first 5 lines?

本文关键字:继续 读取 C++      更新时间:2023-10-16

我真的很沮丧。我正在尝试读取具有以下内容的 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;
}

由于某些原因,编译器甚至不会进入循环。它只会跳到返回 0;

您的number值太大,无法放入四字节有符号整数中。 最大值为 2147483647 (2^31 - 1(,这就是您在最后打印出来的原因。 (你不是在问这个问题;我不知道我自己是怎么注意到的!

但我也想知道的是每条记录之间的额外线条。 我发现这个问题讨论了fstream和分隔符。 我想知道它是否卡在空白行,什么都不读,然后只是输出相同的 lastfirstuinnumber 值。

可能存在不同类型的错误。 最好的使用方法是ios::good

while (!phoneBook.good()) {