c++从文件第一行读取学生信息
时间: 2023-07-01 17:08:38 浏览: 88
假设学生信息文件名为"student.txt",其中每行内容为:学生姓名、学号、年龄、性别。
以下是C++代码示例:
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ifstream infile("student.txt"); // 打开文件
if (!infile.is_open()) { // 判断文件是否打开成功
cout << "文件打开失败!" << endl;
return 0;
}
string name, id, age, gender;
infile >> name >> id >> age >> gender; // 读取文件第一行的学生信息
cout << "姓名:" << name << endl;
cout << "学号:" << id << endl;
cout << "年龄:" << age << endl;
cout << "性别:" << gender << endl;
infile.close(); // 关闭文件
return 0;
}
```
输出结果为:
```
姓名:张三
学号:10001
年龄:20
性别:男
```
相关问题
C++输人10个学生5门课的成绩,能够按任意一门课程的成绩,对学生信息进行排序,并将排序结果写入到文件students.txt中,程序启动时,能自动从文件students.txt中读取学生的信息
可以使用文件流来读取和写入文件,具体操作如下:
```cpp
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
struct Student {
string name;
int scores[5];
double average;
};
bool cmp(Student a, Student b) {
// 根据第二门课程成绩进行排序
return a.scores[1] > b.scores[1];
}
int main() {
const int N = 10, M = 5;
Student students[N];
// 从文件中读取学生信息
ifstream infile("students.txt");
for (int i = 0; i < N; i++) {
infile >> students[i].name;
for (int j = 0; j < M; j++) {
infile >> students[i].scores[j];
}
students[i].average = accumulate(students[i].scores, students[i].scores + M, 0) / (double)M;
}
infile.close();
// 根据第二门课程成绩进行排序
sort(students, students + N, cmp);
// 将排序后的结果写入到文件中
ofstream outfile("students.txt");
for (int i = 0; i < N; i++) {
outfile << students[i].name << " ";
for (int j = 0; j < M; j++) {
outfile << students[i].scores[j] << " ";
}
outfile << "平均分:" << students[i].average << endl;
}
outfile.close();
return 0;
}
```
注:以上代码仅是示例代码,实际使用时需要根据具体需求进行修改。另外,在写入文件时需要注意,如果不想覆盖原有的内容,可以使用`ofstream`的`ios::app`参数,表示以追加的方式打开文件,如下:
```cpp
ofstream outfile("students.txt", ios::app);
```
c++3.定义学生类Student,包含成员:学号(num):整型,姓名(name):char [15], 四门课成绩(sc):一维整型数组,然后定义相关函数分别完成以下功能: 1)输入学生信息; 2)显示学生信息; 3)保存学生信息; 4)从文件读取学生信息; 在主函数中定义对象,并对上述函数进行测试。
以下是实现上述要求的C++代码:
```
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
const int COURSE_NUM = 4; // 成绩科目数
class Student {
private:
int num; // 学号
char name[15]; // 姓名
int sc[COURSE_NUM]; // 四门课成绩
public:
void input(); // 输入学生信息
void display(); // 显示学生信息
void save(); // 保存学生信息到文件
void load(); // 从文件读取学生信息
};
void Student::input() {
cout << "请输入学号:";
cin >> num;
cout << "请输入姓名:";
cin >> name;
cout << "请输入四门课成绩:" << endl;
for (int i = 0; i < COURSE_NUM; i++) {
cout << "第" << i + 1 << "门课成绩:";
cin >> sc[i];
}
}
void Student::display() {
cout << "学号:" << num << endl;
cout << "姓名:" << name << endl;
cout << "四门课成绩:" << endl;
for (int i = 0; i < COURSE_NUM; i++) {
cout << "第" << i + 1 << "门课成绩:" << sc[i] << endl;
}
}
void Student::save() {
ofstream fout("student.txt", ios::app);
fout << num << " " << name << " ";
for (int i = 0; i < COURSE_NUM; i++) {
fout << sc[i] << " ";
}
fout << endl;
fout.close();
}
void Student::load() {
ifstream fin("student.txt");
while (!fin.eof()) {
fin >> num >> name;
for (int i = 0; i < COURSE_NUM; i++) {
fin >> sc[i];
}
display();
}
fin.close();
}
int main() {
Student s;
int choice;
do {
cout << "请选择要进行的操作:" << endl;
cout << "1. 输入学生信息" << endl;
cout << "2. 显示学生信息" << endl;
cout << "3. 保存学生信息到文件" << endl;
cout << "4. 从文件读取学生信息" << endl;
cout << "5. 退出程序" << endl;
cin >> choice;
switch (choice) {
case 1:
s.input();
break;
case 2:
s.display();
break;
case 3:
s.save();
break;
case 4:
s.load();
break;
case 5:
cout << "程序已退出。" << endl;
break;
default:
cout << "输入无效,请重新输入。" << endl;
break;
}
} while (choice != 5);
return 0;
}
```
在主函数中创建了一个Student对象s,通过switch语句实现了菜单选择功能,用户可以选择输入学生信息、显示学生信息、保存学生信息到文件或从文件读取学生信息。其中,保存学生信息到文件使用了ofstream类,从文件读取学生信息使用了ifstream类。注意,在保存学生信息到文件时使用了ios::app参数,表示在文件末尾添加内容而不是覆盖原有内容。
阅读全文