![](/img/trans.png)
[英]I want to take inputs of 2d vector using ranged based for loop. How can i do?
[英]How can I take mulltiple inputs using a for loop in file handling?
循环完成后,文件中只写入最后一条数据; 我该如何解决这个问题?
#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
文件两次,一次用于 output,然后用于输入。 每次打开 output 的文件时,都会覆盖现有文件。 这就是为什么当循环结束时文件中只存在最后一个数据条目的原因。
将文件打开/关闭逻辑移到循环之外,或者在打开 output 文件时启用app
或ate
标志以保留其现有内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.