0829|C++day7 auto、lambda、C++数据类型转换、C++标准模板库(STL)、list、文件操作

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

一、思维导图

0829|C++day7 auto、lambda、C++数据类型转换、C++标准模板库(STL)、list、文件操作,C++,# c++作业,嵌入式学习,c++,开发语言

0829|C++day7 auto、lambda、C++数据类型转换、C++标准模板库(STL)、list、文件操作,C++,# c++作业,嵌入式学习,c++,开发语言 0829|C++day7 auto、lambda、C++数据类型转换、C++标准模板库(STL)、list、文件操作,C++,# c++作业,嵌入式学习,c++,开发语言

0829|C++day7 auto、lambda、C++数据类型转换、C++标准模板库(STL)、list、文件操作,C++,# c++作业,嵌入式学习,c++,开发语言 0829|C++day7 auto、lambda、C++数据类型转换、C++标准模板库(STL)、list、文件操作,C++,# c++作业,嵌入式学习,c++,开发语言

0829|C++day7 auto、lambda、C++数据类型转换、C++标准模板库(STL)、list、文件操作,C++,# c++作业,嵌入式学习,c++,开发语言

0829|C++day7 auto、lambda、C++数据类型转换、C++标准模板库(STL)、list、文件操作,C++,# c++作业,嵌入式学习,c++,开发语言

二、【试编程】将实例化类对象写入容器后,写入.txt文本中,再重新定义一个类容器,将.txt中的内容读取出来,输出到终端

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

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

再把这些学生从文件中读取出来,放入另一个容器中并且遍历输出该容器里的学生。文章来源地址https://www.toymoban.com/news/detail-690291.html

方法一(使用string类型的容器读取)

#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
class Stu
{
private:
    string name;
    int id;
public:
    //无参构造函数
    Stu() {}
    //有参构造函数
    Stu(string n, int i):name(n),id(i){}
    string getname()
    {
        return name;
    }
    int getid()
    {
        return id;
    }
};
int main()
{
    Stu s1("张三",1001);
    Stu s2("李四",1002);
    Stu s3("王五",1003);
    Stu s4("赵六",1004);
    Stu s5("小明",1005);
    vector<Stu> v;//无参构造函数
    v.push_back(s1);//尾插
    v.push_back(s2);
    v.push_back(s3);
    v.push_back(s4);
    v.push_back(s5);

    //创建一个流对象
    ofstream osf;
    //以写的方式打开文件
    osf.open("D:/hqyj/QTtxt/day7/stu.txt",ios::out);
    //写入数据
    for(int i=0;i<5;i++)
    {
        osf << v.at(i).getname() << " " << v.at(i).getid() << endl;
    }
    //关闭文件
    osf.close();

    //创建一个流对象
    ifstream isf;
    //以读的方式打开文件
    isf.open("D:/hqyj/QTtxt/day7/stu.txt",ios::in);
    //读取数据
    //创建一个新的容器存放读取到的数据
    vector<Stu> stu;
    string buf;//将从文件中的数据暂存到buf中
    while(getline(isf,buf))//当读不到数据时退出循环
    {
        isf >> buf;//从文件中读取
        stu.push_back(buf);//写入到容器中
    }
    for(int i=0;i<stu.size();i++)
    {
        cout << stu.at(i);
        cout << endl;
    }
    //关闭文件
    isf.close();

    return 0;
}

方法二(使用类容器读取)

#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
class Stu
{
private:
    string name;
    int id;
public:
    //无参构造函数
    Stu() {}
    //有参构造函数
    Stu(string n, int i):name(n),id(i){}
    string getname()
    {
        return name;
    }
    int getid()
    {
        return id;
    }
};
int main()
{
    Stu s1("张三",1001);
    Stu s2("李四",1002);
    Stu s3("王五",1003);
    Stu s4("赵六",1004);
    Stu s5("小明",1005);
    vector<Stu> v;//无参构造函数
    v.push_back(s1);//尾插
    v.push_back(s2);
    v.push_back(s3);
    v.push_back(s4);
    v.push_back(s5);

    //创建一个流对象
    ofstream osf;
    //以写的方式打开文件
    osf.open("D:/hqyj/QTtxt/day7/stu.txt",ios::out);
    //写入数据
    for(int i=0;i<5;i++)
    {
        osf << v.at(i).getname() << " " << v.at(i).getid() << endl;
    }
    //关闭文件
    osf.close();

    //创建一个流对象
    ifstream isf;
    //以读的方式打开文件
    isf.open("D:/hqyj/QTtxt/day7/stu.txt",ios::in);
    //读取数据
    //创建一个新的容器存放读取到的数据
    vector<Stu> stu;
    string buf;//将从文件中的数据暂存到buf中
    while(getline(isf,buf))//使用getline函数从文件流isf中逐行读取数据,并将每一行的内容存储在字符串变量buf中
    {
        string name = buf.substr(0,buf.length()-4);//使用substr函数从读取到的每一行中提取出姓名部分。line.length() - 4表示从当前行的开头截取到倒数第4个字符之前,剩下的部分即为姓名。
        int id = atoi(buf.substr(buf.length()-4).c_str());//使用substr函数和atoi函数从读取到的每一行中提取出学号部分。line.length() - 4表示从当前行的末尾4个字符开始截取,剩下的部分即为学号。atoi函数将提取到的学号转换为整数。

        Stu s(name,id);//使用从文件中提取得到的姓名和学号实例化一个Stu对象
        stu.push_back(s);//尾插,将创建的学生对象添加到容器v的末尾
    }
    for(int i=0;i<stu.size();i++)
    {
        cout << stu[i].getname() << stu[i].getid() << endl;
    }
    //关闭文件
    isf.close();

    return 0;
}

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

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

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

相关文章

  • 21天学会C++:Day7----auto关键字

    · CSDN的uu们,大家好。这里是C++入门的第七讲。 · 座右铭:前路坎坷,披荆斩棘,扶摇直上。 · 博客主页: @姬如祎 · 收录专栏:C++专题 目录 1. 知识引入 2. auto的使用 2.1 auto与指针和引用结合起来使用 2.2 在同一行定义多个变量 2.3 auto不能推导的场景  2.3.1 auto不能作

    2024年02月08日
    浏览(35)
  • C++ Day7

    C++11中引出了变量的类型自动推导,它和Python 不一样,C++需要用auto来引导 auto修饰变量,可以自动推导出变量的数据类型 1 使用auto修饰变量时,必须初始化 2 auto的右值,可以是右值,也可以是表达式,还可以是函数的返回值 3 auto不能直接声明数组 4 auto不能作为函数的

    2024年02月10日
    浏览(26)
  • 嵌入式:C++ Day7

     源码:

    2024年02月15日
    浏览(26)
  • ARM day7 day8 UART串口、PWM蜂鸣器、WDT看门狗、ADC数模转换

            GPA1_0: RXD2         GPA1_1: TXD2         1)对外设置 (GPIO)             GPA1CON: 0x11400020   3:0-0x2(RXD2)  7:4-0x2(TXD2)         2)对内设置(uart)             ULCON2: 0x13820000   0x3             UCON2:  0x13820004   1:0-01(polling)  3:2-01(polling)             UTRSTAT2: 0-1(r

    2024年02月21日
    浏览(24)
  • leetcode(矩阵)74. 搜索二维矩阵(C++详细解释)DAY7

    给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。 m == matrix.length n == matrix[i].length 1 = m, n = 100 -10^ 4 = matrix

    2024年02月19日
    浏览(26)
  • 标准 C++ 数据类型和 C++/WinRT

    借助 C++/WinRT,可以使用标准 C++ 数据类型(包括某些 C++ 标准库数据类型)调用 Windows 运行时 API。 可以将标准字符串传递到 API(请参阅 C++/WinRT 中的字符串处理),还可以将初始值列表和标准容器传递到 API,这些 API 需要语义上等价的集合。 初始值列表 (std::initializer_list

    2024年01月17日
    浏览(24)
  • 深入探讨Lambda表达式转换为委托类型的编译过程

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

    2024年02月20日
    浏览(27)
  • C++之数据类型转换(全)

    当我们用C++编写代码时,经常会遇到数据类型的转换,如string,char*,char[],const char*、Qstring以及int,float等各种类型之间的转换。 而且有些转换的函数在低版本的C++中是不支持的,所幸这里我们对C++中常用的数据类型转换进行记录。 在数据转换中,尤其是字符串转换是最常用

    2024年02月03日
    浏览(25)
  • C++的auto类型说明符详解 附易错实例

      💯 博客内容:C++读取一行内个数不定的整数的方式 😀 作  者:陈大大陈 🚀 个人简介:一个正在努力学技术的准前端,专注基础和实战分享 ,欢迎私信! 💖 欢迎大家:这里是CSDN,我总结知识和写笔记的地方,喜欢的话请三连,有问题请私信 😘 😘 😘 目录 基本概

    2024年02月13日
    浏览(28)
  • 【C++】引用 | auto类型 |范围for |使用nullptr的原因

    引用不是新定义一个变量,而是 给已存在的变量取别名 ,编译器不会为引用变量开辟内存空间,它和它引用的变量 公用同一块内存空间 比如说 李逵,在家称为\\\"铁牛\\\", 江湖上人称\\\"黑旋风\\\" 这两个称号都是他的 b是a的引用,也就是起了一个别名,a再取了一个名称 同时改变别

    2024年01月16日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包