C++ 读取文本文件内容到结构体数组中并排序

成绩排行:从Score.txt文件读取学生信息,对其进行排序,按回答题数从大到小排,若相等,按分数从小到大排

#include<iostream>
#include<fstream>  //引用文件输入输出库
#include<string>
#include<algorithm>
using namespace std;
struct Score{
    string ID;
    int question_num;//问题数
    int score;

    friend bool operator <(Score a,Score b)  //重载小于号,定义排序规则
    {
        if(a.question_num != b.question_num)
            return a.question_num>b.question_num;
        else
            return a.score<b.score;
    }
}Stu_score[100];
int main()
{
    ifstream infile;  
    int i = 0;
    infile.open("Score.txt",ios::in);//打开文件,文件目录可以是.cpp文件所在目录,也可以是指定的绝对路径
    if(!infile)                       //打开失败
    {
        cout<<"open failed"<<endl;
        exit(1);
    }
    while(!infile.eof())
    {
        infile>>Stu_score[i].ID>>Stu_score[i].question_num>>Stu_score[i].score;//文件流输入结构体中
        i++;
    }
    sort(Stu_score,Stu_score+i);//排序
    for(int j=0;j<i;j++)
        cout<<j+1<<" "<<Stu_score[j].ID<<" "<<Stu_score[j].question_num<<" "<<Stu_score[j].score<<endl;
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/ttzz/p/10523649.html