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

标签 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[])
{
     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 和分隔符。我想知道它是否卡在空白行,什么也不读取,然后只输出 lastfirstuin数字

关于C++ fstream 继续读取相同的前 5 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19330453/

相关文章:

C++ SFML 2.1 未定义对 GLEW 的引用

Haskell IO 和关闭文件

C++ vector 打印出奇怪的元素

while-loop - 什么是差一错误以及如何修复它?

c++ - 如何设置以非阻塞模式从服务器的客户端接收消息的超时时间?

c++ - 类树与结构树节点

python - python csv模块如何理解行尾与换行符

linux - sed 字符串的第二次出现 - 对于外部文件中的所有行 (Linux)

c++ - _WIN32_WINNT 宏,适用于 win7 和 winxp

ruby - 如何在 Ruby 中写入文件?