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;
}

运行结果:

今日思维导图

相关推荐
大模型铲屎官1 小时前
【Python-Day 14】玩转Python字典(上篇):从零开始学习创建、访问与操作
开发语言·人工智能·pytorch·python·深度学习·大模型·字典
yunvwugua__1 小时前
Python训练营打卡 Day27
开发语言·python
Java致死2 小时前
设计模式Java
java·开发语言·设计模式
zh_xuan2 小时前
c++ 类的语法3
开发语言·c++
一律清风3 小时前
【Opencv】canny边缘检测提取中心坐标
c++·opencv
belldeep5 小时前
如何阅读、学习 Tcc (Tiny C Compiler) 源代码?如何解析 Tcc 源代码?
c语言·开发语言
LuckyTHP5 小时前
java 使用zxing生成条形码(可自定义文字位置、边框样式)
java·开发语言·python
a东方青7 小时前
蓝桥杯 2024 C++国 B最小字符串
c++·职场和发展·蓝桥杯
XiaoyaoCarter8 小时前
每日一道leetcode
c++·算法·leetcode·职场和发展·二分查找·深度优先·前缀树
Blossom.1188 小时前
使用Python实现简单的人工智能聊天机器人
开发语言·人工智能·python·低代码·数据挖掘·机器人·云计算