C++day07(auto、lambda、类型转换、STL、文件操作)

今日任务

试编程:

封装一个学生的类,定义一个学生这样类的vector容器, 里面存放学生对象(至少3个)

再把该容器中的对象,保存到文件中。

再把这些学生从文件中读取出来,放入另一个容器中并且遍历输出该容器里的学生。

代码:

cpp 复制代码
#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;
}

运行结果:

今日思维导图

相关推荐
陌路20几秒前
C++30 STL容器 -deque双端队列
开发语言·c++
AI视觉网奇5 分钟前
ue 自己制作插件 c++
c++·ue5
xb113219 分钟前
C#委托详解
开发语言·c#
brent42319 分钟前
DAY50复习日
开发语言·python
木头程序员28 分钟前
前端(包含HTML/JavaScript/DOM/BOM/jQuery)基础-暴力复习篇
开发语言·前端·javascript·ecmascript·es6·jquery·html5
Jayden_Ruan33 分钟前
C++分解质因数
数据结构·c++·算法
Data_agent39 分钟前
Cocbuy 模式淘宝 / 1688 代购系统(欧美市场)搭建指南
开发语言·python
lsx2024061 小时前
《Foundation 下拉菜单》
开发语言
期待のcode1 小时前
认识Java虚拟机
java·开发语言·jvm
微露清风1 小时前
系统性学习C++-第二十讲-哈希表实现
c++·学习·散列表