在c++中读取文件
Read file in C++
我写了下面的代码来读取文件的内容:
#include <ifstream>
#include <iostream>
using namespace std;
int main(){
char file_name[30] = "data.txt";
// Create an ifstream to read the file.
ifstream People_in(file_name);
while (1) {
if (People_in.eof())
break;
People_in >> first_name >> last_name >> age;
cout << endl << "First Name: " << first_name;
cout << endl << "Last Name: " << last_name;
cout << endl << "Enter Age: " << age;
cout << endl;
}
People_in.close();
return 0;
}
data.txt内容:
FirstName1
LastName1
1
FirstName2
LastName2
2
FirstName3
LastName3
3
我期望的输出:
First Name: FirstName1
Last Name: LastName1
Age: 1
First Name: FirstName2
Last Name: LastName2
Age: 2
First Name: FirstName3
Last Name: LastName3
Age: 3
但是输出是:
First Name: FirstName1
Last Name: LastName1
Age: 1
First Name: FirstName2
Last Name: LastName2
Age: 2
First Name: FirstName3
Last Name: LastName3
Age: 3
First Name: FirstName3
Last Name: LastName3
Age: 3
我不知道为什么?PeopleIn在读取所有数据时应该达到0。但它怎么能重复最后3行呢?
这是因为在最后一步之后没有到达eof(文件中3后面有一个字符)。
试试这个:
while (People_in >> first_name >> last_name >> age)
{
cout << endl << "First Name: " << first_name;
cout << endl << "Last Name: " << last_name;
cout << endl << "Enter Age: " << age;
cout << endl;
}
检查文件末尾没有额外的新行。似乎有一组额外的新行(n
),这是导致eof
方法失败。
即使在文件末尾没有换行符,代码仍然会打印额外的输入。相反,在你读了名字和年龄之后,试试:
People_in >> first_name >> last_name >> age;
if (first_name.length() == 0)
break;
....
像这样试试
while (People_in) {
//...
}
删除if分隔符
相关文章:
- 正在将csv文件读取为双精度矢量
- 将从格式化文本文件读取的文本数据存储到链表
- C++ 读取文件读取文件不正确
- 使用对象文件读取三角形数据网格
- 如何减慢从 BVH 文件读取的 opengl 动画?
- 从文件读取,并写入函数C++中的数组
- 从对象C++中的文件读取内容时出现分段错误
- 从文件读取并通过矢量输出到控制台
- 尝试将字符串从文件读取到无符号字符向量中
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 简化文件读取的函数
- 如何将逗号分隔的文件读取为 2D int 数组?
- 在 c++ 中将数据从文件读取到队列中
- 'std::wstring_convert'尽可能多地转换(从 UTF8 文件读取块)
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- 文件读取C++包括空格键
- 从文件读取时未将值推回矢量
- 从文件 C++ 读取时的无限循环
- 从同一文件读取和写入?
- 从.txt文件读取到C++中的双精度向量