从文件读取时对类性别进行排序

Sorting class gender when reading from a file

本文关键字:排序 文件 读取      更新时间:2023-10-16

你好,我是新来的,我有一个小问题,如果你帮助我,我将不胜感激

学生测试

while (!input.eof()) {
    stud.read(input);
    if (== 'M')
        stud.print();
}

现在我卡在这里,我可以成功地将它们全部打印出来,但我不知道if ( == 'M'),我不知道该放什么,所以我可以根据男性对它们进行排序,只有关于如何解决它的任何线索?

我有 2 个头文件包含类学生和成绩记录,并且在另一个 c++ 文件中都有 getter 和 setter。

这是stud.read(input)读取的地方

void Student::read(ifstream &file){
char sex;
string line;
double math, computer, english;
string name;
    getline(file, name, ',');
    s.setName(name);
    file >> sex;
    file.ignore();
    s.setSex(sex);
    file >> math;
    file.ignore();
    s.grade.setMathGrade(math);
    file >> computer;
    file.ignore();
    s.grade.setComputerGrade(computer);
    file >> english;
    file.ignore();
    s.grade.setEnglishGrade(english);

}

然后它根据这个函数打印它。

void Student::print(){
s.getSex();
double m = s.grade.getMathGrade();
double c = s.grade.getComputerGrade();
double e = s.grade.getEnglishGrade();
double a = s.grade.getAverage();
cout << left << setw(24) << s.getName() << setw(15) << left << letterGrade(m) << setw(15) << left << letterGrade(c) << setw(15) << left << letterGrade(e) << setw(15) << left << s.grade.getTotal() << setw(15) << left << letterGrade(a) << endl;

}

编辑

我不知道如何放置完整的代码,所以我在 Word 文档中制作了它,如果您下载,我会很高兴在此处输入链接说明

>假设getSex只返回一个 M 或一个 F 作为字符,if (stud.getSex() == 'M')应该就足够了。 顺便说一句,我不相信我会看到stud.getSex()的电话,更不用说在如此完全无辜的情况下了。

正确的函数

while (!input.eof()) 
{
    stud.read(input);
    if ((stud.getSex() == 'M') | (stud.getSex() == "m"))
    {
        stud.print();
    }
}

这应该检查对象的性别并将其作为字符串返回以进行检查。