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

这篇具有很好参考价值的文章主要介绍了C++day07(auto、lambda、类型转换、STL、文件操作)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今日任务

试编程:

封装一个学生的类,定义一个学生这样类的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;
}

运行结果:

C++day07(auto、lambda、类型转换、STL、文件操作),c++,开发语言

今日思维导图

C++day07(auto、lambda、类型转换、STL、文件操作),c++,开发语言文章来源地址https://www.toymoban.com/news/detail-726003.html

到了这里,关于C++day07(auto、lambda、类型转换、STL、文件操作)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入探讨Lambda表达式转换为委托类型的编译过程

    了解了,如果要深入探讨Lambda表达式转换为委托类型的编译过程,我们需要关注C#编译器如何处理这个转换。这个过程涉及到编译时的类型推断、匿名方法的创建,以及生成对应的委托实例。我们来更详细地分析这个过程: 编译阶段 1. 解析Lambda表达式 词法分析 :编译器首先

    2024年02月20日
    浏览(27)
  • 07-3_Qt 5.9 C++开发指南_文件目录操作

    Qt 为文件和目录操作提供了一些类,利用这些类可以方便地实现一些操作。Qt 提供的与文件和目录操作相关的类包括以下几个。 QCoreApplication:用于提取应用程序路径、程序名等文件信息 QFile: 除了打开文件操作外,QFile 还有复制文件、删除文件等功能 QFileInfo:用于提取文件的信

    2024年02月13日
    浏览(38)
  • cpp_07_类型转换构造_析构函数_深拷贝_静态成员

            基本类型之间的转换,编译器内置转换规则:int - double         类类型之间的转换,编译器不知道转换规则,需要用户提供:Cat - Dog         定义:1)单参构造                            (同于拷贝构造函数)                       2)参数类型与类类型不同

    2024年02月03日
    浏览(31)
  • 【C++】STL 算法 - transform 变换算法 ② ( 变换规则为 普通函数 | 变换规则为 Lambda 表达式 | 变换规则为 函数对象 | 变换规则为 函数适配器转换的函数对象 )

    transform 算法函数原型 : 下面的函数原型作用是 将 一个输入容器 中的元素 变换后 存储到 输出容器 中 ; 参数解析 : InputIt first1 参数 : 输入容器 的 起始迭代器 ( 包含 ) ; InputIt last1 参数 : 输入容器 的 终止迭代器 ( 不包含 ) ; OutputIt d_first 参数 : 输出容器 的 开始迭代器 , 输出元

    2024年01月21日
    浏览(38)
  • 2023.07.29 驱动开发DAY6

    通过epoll实现一个并发服务器 服务器 客户端 运行结果  

    2024年02月15日
    浏览(36)
  • vue尚品汇商城项目-day07【52.打包文件,处理map文件】

    问题:为啥要处理map后缀文件? 答案:因为对上线的项目,这个.map文件没用处且占得体积很大,所以需要排除掉。 配置方式,在vue.config.js中新加入一行即可。 未加map之前的dist下的打包文件 加入处理map配置后的打包后的文件 1.vue尚品汇商城项目-day07【44.个人中心二级路由搭

    2023年04月09日
    浏览(32)
  • python读取.stl文件(以及转换为obj方法)

    代码如下 该代码可以直接将stl文件中对点直接都输出 改进版本 把输出的点转换为npy并且保存 .stl文件格式如下图所示: 那么读取该文件就需要知道stl的构成 stl是一种表示三角网格的文件格式 STL只能用来表示封闭的面或者体,stl文件有两种:一种是ASCII明码格式,另一种是二

    2024年02月05日
    浏览(25)
  • python读取点云文件(.stl文件、.obj文件)(以及转换为obj方法)

    代码如下 该代码可以直接将stl文件中对点直接都输出 改进版本 把输出的点转换为npy并且保存 .stl文件格式如下图所示: 那么读取该文件就需要知道stl的构成 stl是一种表示三角网格的文件格式 STL只能用来表示封闭的面或者体,stl文件有两种:一种是ASCII明码格式,另一种是二

    2024年02月08日
    浏览(23)
  • DAY07_Maven高级——分模块开发与设计&依赖管理&聚合与继承&属性管理&多环境配置与应用&私服

    问题导入 分模块开发对工程有什么好处? 模块拆分原则 目的:项目的扩展性变强了,方便其他项目引用相同的功能。 将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享 问题导入 一个完整的工程依据什么来进行模块的拆分? 2.1 创建Maven模块 2.2 书

    2024年02月09日
    浏览(35)
  • 【C++】STL 算法 ⑤ ( 二元函数对象 | std::transform 算法简介 | 为 std::transform 算法传入一元函数对象进行转换操作 )

    \\\" 二元函数对象 \\\" 指的是 一个实例类 中 , 重载了 \\\" 函数调用操作符 () \\\" 函数 operator() , 并且该函数 接受 2 个参数 ; 如果 \\\" 重载 函数调用操作符 () 函数 \\\" 只接收一个参数 , 那么这个函数对象就是 一元函数对象 ; 下面的结构体类 函数对象 , 就是一个二元函数对象 , 其作用是将

    2024年01月18日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包