c++文件读写,vector用法,运算符重载

// ForChypre.cpp : 定义控制台应用程序的入口点。///*假定文本文件a1.txt中是某高校所有参加住宅小区挑房职工的信息,    请编写程序,读出文件中的内容,再按挑房的先后次序排队后将排序号和    姓名以文本方式存放到文件a2.txt中。排队原则:先按职称排,同职称按    分房工龄排,同工龄按年龄排。职称编号:校级干部      0教授、正处    级    1副教授、副处级  2讲师、科级    3其他 */#include "stdafx.h"#include <iostream>#include <fstream>#include <sstream>#include <vector>using namespace std;class Info{public:bool operator >(const Info& info2){    if(turnTitle2number(this->title)<turnTitle2number(info2.title)||this->worktime>info2.worktime||this->age>info2.age)    {        return true;    }    else        return false;}int turnTitle2number(string title){    string l[][3]={{"教授","正处级"},{"副教授","副处级"},{"讲师","科级"}};    for(int i=0;i<sizeof(l)/3*sizeof(string);i++)    {        for (int j=0;j<3;j++)        {            if(title==l[i][j])                return i;//将职称转换成相应的数字,方便比较大小,职称越小则数字越大        }    }}public:    string pname;//姓名    string title;//职称    int age;//年龄    int worktime;//工龄};void fileRead(string fileName,vector<Info>&vec){    ifstream file(fileName);    string strTemp;    while (!file.eof())//如果不是文件末尾,则读出信息    {        Info info;        getline(file,strTemp);//一行信息        istringstream str(strTemp);//分割一行信息,以空格为分隔符        string strWord;//存储单个单词的单元        //vector <string>vect;        int i=0;        while(str>>strWord)        {            switch(i)            {            case 0:                info.pname=strWord;                break;            case 1:                info.title=strWord;                break;            case 2:                info.worktime=atoi(strWord.c_str());                break;            case 3:                info.age=atoi(strWord.c_str());                break;            }            i++;            /*                if(strWord!=""&&strWord!="\r")                        vect.push_back(strWord);//存入vector中.*/                        }        vec.push_back(info);    }}void sort(Info info[],int len,vector<Info> &vect){    int i=0;    for (vector<Info>::iterator itr=vect.begin();itr!=vect.end();itr++)//itr 为指针    {        info[i]=*itr;        i++;    }    for(int i=0;i<len;i++)    {        for (int j=i;j<len;j++)        {            if (!(info[i]>info[j]))            {                Info temp=info[i];                info[i]=info[j];                info[j]=temp;//交换            }        }    }    vect.clear();    for (int i=0;i<len;i++)    {        vect.push_back(info[i]);//入栈    }}void fileWrite(string& fileName,vector<Info>&vect){    ofstream file(fileName.c_str());    Info temp;    for (vector<Info>::iterator itr=vect.begin();itr!=vect.end();itr++)    {        temp=*itr;        string str;        str.append(temp.pname);        str.append(" ");        str.append(temp.title);        str.append(" ");        char str2[100];        itoa(temp.worktime, str2, 10);//(源,目标字符串,进制)        str.append(str2);        str.append(" ");        itoa(temp.age, str2, 10);        str.append(str2);        str.append("\n");        file<<str;    }    }void main(){    string a="a1.txt";    string b="a2.txt";    vector<Info> vect;    fileRead(a,vect);  //a读出    Info *techers=new Info[vect.size()];    sort(techers,vect.size(),vect);    fileWrite(b,vect);  //写入b}

原文链接: https://www.cnblogs.com/evilmusclepeople/archive/2011/07/10/2102403.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/28396

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午5:55
下一篇 2023年2月8日 上午5:56

相关推荐