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

今日思维导图
