今日任务
试编程:
封装一个学生的类,定义一个学生这样类的vector容器, 里面存放学生对象(至少3个)
再把该容器中的对象,保存到文件中。
再把这些学生从文件中读取出来,放入另一个容器中并且遍历输出该容器里的学生。
代码:
#include <iostream>
#include <vector>
#include <fstream>
#include <cstring>
using namespace std;
class Stu{
private:string name;int id;
public:Stu(){}Stu(string name,int id):name(name),id(id){}string getName(Stu s){return s.name;}int getId(Stu s){return s.id;}
};int main()
{//--------------写入/*vector<Stu> v1;Stu stu[3]={{"zzz",18},{"xxx",58},{"sss",24}};v1.push_back(stu[0]);v1.push_back(stu[1]);v1.push_back(stu[2]);// for(vector<Stu>::iterator iter=v1.begin();iter<v1.end();iter++){
// cout << iter->getName(*iter) << " " << iter->getId(*iter) <<endl;
// }ofstream os;os.open("../stu.txt",ios::out);for(vector<Stu>::iterator iter=v1.begin();iter<v1.end();iter++){os << iter->getName(*iter) << "|" << iter->getId(*iter) <<endl;}os.close();*///--------------读取vector<Stu> v2;ifstream is;is.open("../stu.txt",ios::in);char buf[128];char n[10];int a;while(is >> buf){//cout << buf <<endl;//sscanf(buf,"%s|%d",n,&a);不太行,只能用空格作为分割好像char *temp=strtok(buf,"|");strcpy(n,temp);//获取第一次分割字符串temp = strtok(NULL,"|");//获取第二次a=atoi(temp);//将字符串转为整型并返回//cout << "n=" << n << " a=" << a <<endl;Stu s(n,a);v2.push_back(s);}is.close();for(vector<Stu>::iterator iter=v2.begin();iter<v2.end();iter++){cout << iter->getName(*iter) << " " << iter->getId(*iter) <<endl;}return 0;
}
运行结果:
今日思维导图