随便改了一下,输出结果:
[C++] 纯文本查看 复制代码 张老师 30 3
学生B 男
学生C 男
学生BA 男
李老师 34 4
学生BB 男
学生BC 男
学生BD 男
学生CA 男
王老师 25 5
学生CB 女
学生CC 女
学生CD 女
学生CE 女
学生CE 女
请按任意键继续. . .
修改后的代码
[C++] 纯文本查看 复制代码 #include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
struct Student//学生
{
string Student_Name;//名字
string Student_Sex;//性别
};
struct Teacher//老师
{
string Teacher_Name;//名字
int Teacher_Age = 0;//年龄
int Teacher_Student = 0;//学生数量
Student Stu[12];//学生结构体对象, 这儿给你改为了数组,原先的指针需要动态申请内存
};
void Read_File(Teacher* Teac)//读文件
{
ifstream ifs;
ifs.open("test.txt", ios::in);//读文件
if (!ifs.is_open())
{
cout << "打开文件失败!" << endl;
return;
}
string buf;
int times = 0;
int i = 0;
while (getline(ifs, buf))
{
istringstream temp(buf);
if (times < 3)//读前三行,读取老师的信息,老师有几个学生
{
temp >> Teac[i].Teacher_Name >> Teac[i].Teacher_Age >> Teac[i].Teacher_Student;
i++;
}
if (times >= 3)//读后面几行
{
for (int j=0; j<3; j++)// 一共有三位老师
{
for (int k=0; k<Teac[j].Teacher_Student; k++) // 每位老师有Teacher_Student位学生
{
getline(ifs, buf);
istringstream temp2(buf);
temp2>> Teac[j].Stu[k].Student_Name >> Teac[j].Stu[k].Student_Sex;
}
}
}
times++;
}
ifs.close();
}
int main()
{
Teacher Teac[3];//创建老师对象
Read_File(Teac);//读文件
for (int i = 0; i < 3; i++)//输出
{
cout << Teac[i].Teacher_Name << " " << Teac[i].Teacher_Age << " " << Teac[i].Teacher_Student << endl;
for (int j = 0; j < Teac[i].Teacher_Student; j++)
cout << Teac[i].Stu[j].Student_Name << " " << Teac[i].Stu->Student_Sex << endl;
}
system("pause");
return 0;
} |