c++ - 如何在文件处理中使用 for 循环获取多个输入?
问题描述
循环完成后,文件中只写入最后一条数据;我该如何解决这个问题?
#include <iostream>
#include <fstream>
using namespace std;
int main(){
char name[50];
char reg[10];
char address[100];
char nationality[50];
char cnumber[50];
char marks[50];
for(int i=1;i<=3;i++)
{
cout<<"Please enter the following data"<<endl;
cout<<endl;
cout<<"enter your name\n";
cin.getline(name,50);
cout<<"enter your reg no.\n";
cin.getline(reg,10);
cout<<"enter your address\n";
cin.getline(address,100);
cout<<"enter your nationality\n";
cin.getline(nationality,50);
cout<<"enter your number\n";
cin.getline(cnumber,50);
cout<<"enter your marks\n";
cin.getline(marks,50);
cout<<endl;
//--------------------------------//////////////////////////////////////////////--------------------------
ofstream x("LOTR.txt");
x<<name<<endl;
x<<reg<<endl;
x<<address<<endl;
x<<nationality<<endl;
x<<cnumber<<endl;
x<<marks<<endl;
x.close();
char name2[50];
char reg2[10];
char address2[100];
char nationality2[50];
char cnumber2[50];
char marks2[50];
ifstream y("LOTR.txt");
y.getline(name2,50);
y.getline(reg2,50);
y.getline(address2,100);
y.getline(nationality2,50);
y.getline(cnumber2,50);
y.getline(marks2,50);
cout<<"name is: "<<name2<<endl;
cout<<endl;
cout<<"registration number is: "<<reg2<<endl;
cout<<endl;
cout<<"Address is: "<<address2<<endl;
cout<<endl;
cout<<"Nationality is: "<<nationality2<<endl;
cout<<endl;
cout<<"Contact number is: "<<cnumber2<<endl;
cout<<endl;
cout<<"Marks are: "<<marks2<<endl;
}
return 0;
}
解决方案
您LOTR.txt
每次循环迭代打开和关闭文件两次,一次用于输出,然后用于输入。每次打开文件进行输出时,都会覆盖现有文件。这就是为什么当循环结束时文件中只存在最后一个数据条目的原因。
要么将文件打开/关闭逻辑移到循环之外,要么在打开输出文件时启用app
orate
标志以保留其现有内容。
推荐阅读
- python - 忽略 Dask 分布式中长时间运行的任务
- odata - 使用 OData 将 NodaTime LocalDate 和 LocalDateTime 序列化为 JSON
- google-apps-script - 邮件合并中的 AppScript 执行 - 可靠性和稳定性的最佳实践
- javascript - 验证单选按钮输入 JavaScript
- angular - 如何在单击我的 IIS 服务器时实现粘贴功能?
- scala - Scala 将对象转换为 JSON 响应
- python - 嵌套的附加查找
- c++ - C++如何高效更新文件内容
- python - 如何在 Python 中写入文件字典列表
- javascript - 如何转换为 24 小时格式?