C++流继续读取相同的前 5 行
C++ fstream keep reading the same first 5 lines?
我真的很沮丧。我正在尝试读取具有以下内容的 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
和分隔符。 我想知道它是否卡在空白行,什么都不读,然后只是输出相同的 last
、first
、uin
和 number
值。
可能存在不同类型的错误。 最好的使用方法是ios::good
:
while (!phoneBook.good()) {
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 循环后如何继续阅读
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 如何继续读取不同功能中的文件,而不是从头开始再次读取文件?
- 失败后可以继续从流读取吗?
- 如何从文件中读取,然后继续从cin读取?
- 控制台将继续关闭,而不是读取 if 语句中的字符串
- 如何只要用户愿意就继续读取输入
- 如何使用 ifstream 打开文件并继续读取直到最后
- C++流继续读取相同的前 5 行
- 如何从文件中读取,直到读取到一个字符,然后跳过一些字符,再次继续读取
- C++在eof()之后继续读取文件
- 分部分读取文件,在最后读取的部分之后继续
- 结束函数,同时从该点继续读取文件
- 程序不会在输入文件中继续读取它
- 从 arduino 读取到 c++ 程序时继续接收 NULL