【发布时间】:2020-01-14 03:23:11
【问题描述】:
我只是一个初学者,试图将 3 个不同的学生记录保存在一个文件中,然后使用学生姓名读取记录。我想要有关名称的信息,例如姓名、卷号和标记。这是到目前为止的代码,但它显示了整个文件。 到目前为止,这是我的代码:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct student
{
string name;
int rollno;
float marks;
};
main()
{
student s1,s2,s3;
int search;
string line;
cout<<"Enter Name: ";
getline(cin,s1.name);
cout<<"Enter Roll No: ";
cin>>s1.rollno;
cout<<"Enter Marks: ";
cin>>s1.marks;
cout<<endl;
cout<<"Enter Name: ";
getline(cin,s2.name);
getline(cin,s2.name);
cout<<"Enter Roll No: ";
cin>>s2.rollno;
cout<<"Enter Marks: ";
cin>>s2.marks;
cout<<endl;
cout<<"Enter Name: ";
getline(cin,s3.name);
getline(cin,s3.name);
cout<<"Enter Roll No: ";
cin>>s3.rollno;
cout<<"Enter Marks: ";
cin>>s3.marks;
cout<<endl;
ofstream fout;
fout.open("Record.txt");
fout<<"Name: "<<s1.name<<endl;
fout<<"Roll No: "<<s1.rollno<<endl;
fout<<"Marks: "<<s1.marks<<endl;
fout<<"Name: "<<s2.name<<endl;
fout<<"Roll No: "<<s2.rollno<<endl;
fout<<"Marks: "<<s2.marks<<endl;
fout<<"Name: "<<s3.name<<endl;
fout<<"Roll No: "<<s3.rollno<<endl;
fout<<"Marks: "<<s3.marks<<endl;
fout.close();
cout<<"Search By Name: ";
cin>>search;
ifstream fin;
fin.open("Record.txt");
while(getline(fin,line))
{
if(line.find(search))
{
cout<<line<<endl;
}
else
{
cout<<"Record Not Found!";
}
}
fin.close();
}
【问题讨论】:
-
您的代码有什么问题?它不做你想让它做的事吗?请解释如何
-
不直接相关,但您的文本文件将包含每个学生记录的 3 行。真的是你想要的吗?
-
@foreknownas_463035818 它打印完整的文件,我只想打印一个学生的记录
-
@SergeBallesta 是的,然后我想使用该名称进行搜索并获取该名称的所有 3 条记录,即名称、卷号和标记,并且不应显示所有其他行
标签: c++