• 嵌入式养成计划-35------C++绪论------C++数据类型------array容器------命名空间


    七十三、 工具QT

    73.1 安装步骤

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    73.2 什么是 Qt

    Qt 是一个跨平台的 C++图形用户界面应用程序框架。

    它为应用程序开发者提供建立艺术级图形界面所需的所有功能。

    它是完全面向对象的,很容易扩展,并且允许真正的组件编程。

    73.3 Qt 的优点

    跨平台,几乎支持所有的平台

    接口简单,容易上手,学习 QT 框架对学习其他框架有参考意义。一定程度上简化了内存回收机制

    开发效率高,能够快速的构建应用程序。

    有很好的社区氛图,市场份额在缓慢上升。

    可以进行嵌入式开发。

    七十四、C++绪论

    C++就是C的扩充, C++包含C的所有属性,换句话说,C程序在C++中合法。
    C++编程思想:面向对象编程。 C语言:面向过程编程
    面向对象编程:可以说一切皆对象
    面向对象编程的三大特性(C++的大三属性):封装、继承、多态

    七十五、C++对C 的兼容

    1. c文件 XXX.c
      ​ 编译c文件 gcc XXX.c / gcc xxx.c -o
    2. c++ 文件 XXX.cpp
      ​ 编译c++文件 g++ xxx.cpp / g++ xxx.cpp -o
    3. 头文件
      ​ c语言中需要 以.h结尾 eg: #include
      ​ c++头文件没有.h eg #include

    七十六、C++的第一条程序

    76.1 cout

    cout 输出类的对象,用来输出的,它可以自动识别类型,所以不需要加格式符。
    << 插入符 (输出符号)
    endl 换行 == ‘\n’

    #include 
    //#预处理
    //include 包含 相应的头文件
    //iostream 输入输出流  i--input  o--out
    
    using namespace std;
    //using :使用命名空间的关键字
    //namespace :命名空间的关键字
    //std:标准的命名空间
    
    //程序入口
    int main()
    { //程序的开始
        cout << "Hello World!" << endl;
        cout << "今天是学习C++的第一天," << "知道吗" << endl;
        return 0;
    } //程序的结束
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    76.2 cin

    cin 输入类的对象, 用来输入的,给变量初始化,
    它可以自动识别数据类型,所以不需要加格式符,不需要加&
    >> 提取符(输入符)

    #include 
    using namespace std;
    int main()
    {
        cout << "请输入你的年纪:" << endl;
        int age;
        cin >> age;
        cout << "age = " << age;  
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    七十七、C++的数据类型

    77.1 数据类型:基本数据类型、构造数据类型

    基本数据类型:char 、short、int 、long、float、double、bool、string
    构造数据类型:数组、指针、结构体、共用体、枚举、类

    #include 
    #include 
    using namespace std;
    int main()
    {
        //整型  进制的问题  有无前缀
        //二进制  0b
        //八进制  0
        //十进制  无
        //十六进制 0x
        int b = 100, b2 = 0b100, b3 = 0100, b4 = 0x100;
        cout << "b = " << b << endl; //结果100
        cout << "b = " << dec << b << endl; //dec是以10进制方式 100
        cout << "b = " << oct << b << endl; //oct是以8进制
        cout << "b = " << hex << b << endl; //hex是以16进制
        cout << "b = " << b << endl; //如果改变了输出进制规则,则后面都以这种方式输出
        cout << "b = " << dec << b << endl;
        //浮点型
        double d1 = 12.3456789, d2 = 1.23456789;
        cout << "d1 = " << d1 << endl; //保留有效数字6位,存在四舍五入
        //如果自己想保留有效数字几位,需要用到一个方法  其头文件 
        cout << setprecision(4) << d1 << endl;
    
        //保留小数点后几位
        cout << setprecision(4) << fixed << d1 << endl;
    
        //bool类型 true == 1  false == 0
        bool t = true, t2 = false;
        cout << t << endl;
        cout << boolalpha << t << endl;
        cout << t2 << endl;
        //bool可以参与运算
        cout << t+t2 << endl;
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    77.2 C++中字符串string

    #include 
    using namespace std;
    int main()
    {
        string str1;  // int a
        string str2 = "abcdef";  //初始化
        cout << "str2 = " << str2 << endl;
    
        string str3 = str2;  //把str2初始化str3
        cout << "str3 = " << str3 << endl;
    
        string str4(str3);  //  ==>   string str4 = str3; 调用有参构造函数
        cout << "str4 = " << str4 << endl;
    
        string str5(str2,3); //把str2下标为3地方开始给str5初始化
        cout << "str5 = " << str5 << endl;
    
        str1 = str5; //赋值
    
        string str6(6, 'm');
        cout << "str6 = " << str6 << endl;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    77.3 C++中字符串常用的函数

    size() 大小—元素的个数

    empty() 判断是否为空

    capacity() 容量大小

    if(!str6.empty())
    {
        cout << str6.size() << endl;
        cout << str6.capacity() << endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    77.4 C++中字符串和C语言中字符串风格互换

    1. c语言风格的字符串可以直接转换成c++字符串

    2. c++字符串不可以直接转换成c风格的字符串

    string str;
    char a[20] = "hello kitty";
    str = a;
    cout << str << endl;
    
    string strr = "hello world";
    //a = strr;
    //strcpy(a, strr);
    strcpy(a, strr.c_str()); //把C++中的字符串转换成c
    cout << a << endl;  //hello world
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    77.5 字符串元素的访问

    1. 下标 —不判断是否越界

    2. at() —判断是否越界

    #include 
    using namespace std;
    int main()
    {
        string str = "hello";
        cout << str[4] << endl;
        cout << str[8] << endl;
        cout << str.at(4) << endl;
        cout << str.at(8) << endl;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    77.6 字符串的比较

    由于c++有这种数据类型的变量,所以可以像其他基本数据类型一样用关系运算符比较

    string str1 = "ab";
    string str2 = "ABCDEFGTTTTT";
    
    if(str1 != str2)
    {
        if(str1 > str2)
            cout << "str1 > str2" << endl;
        else
            cout << "str1 < str2" << endl;
    }
    else
        cout << "sr1 == str2" << endl;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    77.7 字符串的输入

    #include 
    using namespace std;
    int main()
    {
        string str;
        cin >> str; //cin以空格作为结束
        cout << "str = " << str << endl;
        //如果想包含空格 getline
        getline(cin, str);
        cout << "str = " << str << endl;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    七十八、数组 array

    #include 
    #include  //包含数组的头文件 容器
    using namespace std;
    int main()
    {
    //    array a; // == int a[5] 容器
    //    array::iterator iter; //迭代器  ==指针
    //    //a.begin()第一个元素的地址
    //    //a.end()最后一个元素的下一个地址
    //    for(iter = a.begin(); iter != a.end(); iter++)
    //        cin >> *iter;
    //    for(iter = a.begin(); iter != a.end(); iter++)
    //        cout << *iter << " ";
    //    cout << endl;
    
        array< array<int, 2> , 3> a;
        array< array<int, 2> , 3>::iterator iter1;
        array<int, 2>::iterator iter2;
        for(iter1 = a.begin(); iter1 != a.end(); iter1++)
        {
            for(iter2 = (*iter1).begin(); iter2 != (*iter1).end(); iter2++)       
                cin >> *iter2;        
        }
        for(iter1 = a.begin(); iter1 != a.end(); iter1++)
        {
            for(iter2 = (*iter1).begin(); iter2 != (*iter1).end(); iter2++)       
                cout << *iter2 << " ";        
            cout << endl;
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    七十九、命名空间

    79.1 命名空间的作用

    1. 多人协同合作时,可能会出现命名污染(命名冲突)

    2. 命名空间就相当于给一个取个姓氏(尼古拉斯·赵四)

    79.2 std命名空间的使用

    #include 
    //方法3,直接将整个命名空间拿过来,后面的程序就可以不需要加命名空间名以及限定符
    //using namespace std;
    using std::cout;
    int main()
    {
        //方法1:写上命名空间名字以及作用域限定符
        //std::cout << "Hello World!" << std::endl;  
        //方法2:使用命名空间里的某个名字,则后面程序中就不需要加命名空间名以及限定符,
        //但是没有表明的名字,则还要循序方法1
        cout << "Hello World!" << std::endl;
        cout << "...." << std::endl;   
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    79.3 自定义命名空间的使用

    格式:
    namespace 命名空间名
    {
        数据类型 名字1;
        数据类型 名字2;
        数据类型 名字3;
        。。。。
        数据类型 名字n;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    #include 
    using namespace std;
    namespace Zhangsan
    {
        int cuihua;
        int age;
    }
    namespace Lisi //可以嵌套
    {
        int cuihua;
        int age;
        namespace xiaosan
        {
            int age; //作用域不同  可以一级一级找
        }
    }
    namespace Zhangsan //可以在同一个作用域下定义相同的命名空间
    {
        int b;
        //int age  //但是要注意,合并,就不能有相同类型的变量名  
    }
    using Zhangsan::age; //方法2
    int main()
    {
        Zhangsan::cuihua = 19;
        age = 56;  
        Lisi::xiaosan::age = 23;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    79.4 命名空间的总结

    1. 作用:防止命名冲突,命名污染问题
    2. std的命名空间的使用,有三种:独立使用、声明某一个名字、声明整个命名空间
    3. 自定义命名空间:namespace 空间名{ }
    4. 命名空间能够嵌套定义,同一作用域下可以定义多个同名的命名空间

    小作业:

    • 提示并输入一个字符串,统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数
    • 使用C++风格字符串完成,即 string

    我写的:

    #include 
    using namespace std;
    int main()
    {
        cout << "请输入一串字符,以回车结束:" << endl;
        string s;
        int da, xiao, nums, spa, oth;
        da = xiao = nums = spa = oth = 0;
        getline(cin, s);
        for(unsigned int i = 0; i < s.size(); i++){
            //判断大写字母
            if(s.at(i) >= 'A' && s.at(i) <= 'Z')
                da++;
            //判断小写字母
            else if(s.at(i) >= 'a' && s.at(i) <= 'z')
                xiao++;
            //判断数字
            else if(s.at(i) >= '0' && s.at(i) <= '9')
                nums++;
            //判断空格
            else if(s.at(i) == ' ')
                spa++;
            //判断其他字符
            else
                oth++;
        }
        cout << "大写字母个数 : " << da << endl;
        cout << "小写字母个数 : " << xiao << endl;
        cout << "数字个数 : " << nums << endl;
        cout << "空格个数 : " << spa << endl;
        cout << "其他字符个数 : " << oth << endl;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    思维导图

  • 相关阅读:
    java 基础进阶书籍推荐
    [SpringCloud] Nacos 简介
    前后端分离计算机毕设项目之基于springboot+vue的房屋租赁系统《内含源码+文档+部署教程》
    07-树(Tree)结构分析
    spark withColumn的使用(笔记)
    智能监控如何最大化保障生产工人权益,助力电焊车间智能化?
    获取当周和上周的周一、周日时间
    WSL Ubuntu + Docker Desktop搭建python环境
    OpenHarmony中Element类是什么?
    android开发布局知识
  • 原文地址:https://blog.csdn.net/qq_52625576/article/details/133662084