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

news2025/2/25 8:51:01

七十三、 工具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 <iostream>
//#预处理
//include 包含 相应的头文件
//iostream 输入输出流  i--input  o--out

using namespace std;
//using :使用命名空间的关键字
//namespace :命名空间的关键字
//std:标准的命名空间

//程序入口
int main()
{ //程序的开始
    cout << "Hello World!" << endl;
    cout << "今天是学习C++的第一天," << "知道吗" << endl;
    return 0;
} //程序的结束

76.2 cin

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

#include <iostream>
using namespace std;
int main()
{
    cout << "请输入你的年纪:" << endl;
    int age;
    cin >> age;
    cout << "age = " << age;  
    return 0;
}

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

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

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

#include <iostream>
#include <iomanip>
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位,存在四舍五入
    //如果自己想保留有效数字几位,需要用到一个方法  其头文件 <iomanip>
    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;
}

77.2 C++中字符串string

#include <iostream>
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;
}

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

size() 大小—元素的个数

empty() 判断是否为空

capacity() 容量大小

if(!str6.empty())
{
    cout << str6.size() << endl;
    cout << str6.capacity() << endl;
}

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

77.5 字符串元素的访问

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

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

#include <iostream>
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;
}

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;

77.7 字符串的输入

#include <iostream>
using namespace std;
int main()
{
    string str;
    cin >> str; //cin以空格作为结束
    cout << "str = " << str << endl;
    //如果想包含空格 getline
    getline(cin, str);
    cout << "str = " << str << endl;
    return 0;
}

七十八、数组 array

#include <iostream>
#include <array> //包含数组的头文件 容器
using namespace std;
int main()
{
//    array<int, 5> a; // == int a[5] 容器
//    array<int, 5>::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;
}

七十九、命名空间

79.1 命名空间的作用

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

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

79.2 std命名空间的使用

#include <iostream>
//方法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;
}

79.3 自定义命名空间的使用

格式:
namespace 命名空间名
{
    数据类型 名字1;
    数据类型 名字2;
    数据类型 名字3;
    。。。。
    数据类型 名字n;
}
#include <iostream>
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;
}

79.4 命名空间的总结

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

小作业:

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

我写的:

#include <iostream>
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;
}

思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1067955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入了解快速排序:原理、性能分析与 Java 实现

快速排序&#xff08;Quick Sort&#xff09;是一种经典的、高效的排序算法&#xff0c;被广泛应用于计算机科学和软件开发领域。本文将深入探讨快速排序的工作原理、步骤以及其在不同情况下的性能表现。 什么是快速排序&#xff1f; 快速排序是一种基于分治策略的排序算法&am…

【虚拟机栈】

文章目录 1. 虚拟机栈概述2. 局部变量表(Local Variables)3. 操作数栈4. 动态链接4.1 方法的调用&#xff1a;解析与分配 1. 虚拟机栈概述 每个线程在创建时都会创建一个虚拟机栈&#xff0c;其内部保存一个个的栈帧&#xff08;Stack Frame&#xff09;&#xff0c;对应着一次…

【Solidity】智能合约案例——①食品溯源合约

目录 一、合约源码分析&#xff1a; 二、合约整体流程&#xff1a; 1.部署合约 2.管理角色 3.食品信息管理 4.食品溯源管理 一、合约源码分析&#xff1a; Producer.sol:生产者角色的管理合约&#xff0c;功能为&#xff1a;添加新的生产者地址、移除生产者地址、判断角色地址…

阿里云轻量应用服务器流量价格表(计费/免费说明)

阿里云轻量应用服务器套餐有的限制月流量&#xff0c;有的不限制月流量&#xff0c;限制每月流量的套餐&#xff0c;如果自带的免费月流量包用完了&#xff0c;流量超额部分需要另外支付流量费&#xff0c;阿里云百科aliyunbaike.com分享阿里云轻量应用服务器月流量超额收费价格…

信号量机制实现进程互斥,进程同步,进程的前驱关系

信号量机制 一个信号量对应一种资源。 信号量的值这种资源的剩余数量&#xff08;信号量的值如果小于0&#xff0c;说明此时有进程在等待这种资源) P(S )&#xff1a;申请一个资源S&#xff0c;如果资源不够就阻塞等待V(S)&#xff1a;释放一个资源S&#xff0c;如果有进程在…

Linux 磁盘管理+实例

目录 一、文件系统 二、添加磁盘 三、查看磁盘信息&#xff08;块设备&#xff09; 四、分区 1、格式 1&#xff09;MBR分区 2&#xff09;GPT分区 2、管理分区 1&#xff09;使用fdisk 2&#xff09;使用gdisk 3&#xff09;使用parted a.交互式 b.非交互式 3、…

Django 前端模板显示换行符、日期格式

linebreaksbr 显示换行符 <td>{{ data.sku_list|default:"无"|linebreaksbr }}</td> date:"Y年m月d日 H:i" 设置日期格式 <td>{{ data.submit_time|date:"Y年m月d日 H:i" }}</td> 其他语法 forloop 获取循环的索引 …

CSP-J第二轮试题-2019年-3题

文章目录 参考&#xff1a;总结 [CSP-J2019] 纪念品题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示答案 现场真题注意事项 参考&#xff1a; P5662 CSP-J2019纪念品 总结 本系列为CSP-J/S算法竞赛真题讲解&#xff0c;会按照年…

[极客大挑战 2019]BabySQL 1

#做题方法# 进去之后做了简单的注入发现有错误回显&#xff0c;就进行注入发现过滤了sql语 后面进行了双写and payload&#xff1a; ?usernameadmin%27%20aandnd%20updatexml(1,concat(0x7e,dAtabase(),0x7e,version()),1)%20--&passwordadmi 接下来又 ?usernameadm…

Python大数据之PySpark(七)SparkCore案例

文章目录 SparkCore案例PySpark实现SouGou统计分析 总结后记 SparkCore案例 PySpark实现SouGou统计分析 jieba分词&#xff1a; pip install jieba 从哪里下载pypi 三种分词模式 精确模式&#xff0c;试图将句子最精确地切开&#xff0c;适合文本分析&#xff1b;默认的方…

华为云云耀云服务器L实例评测|部署私有网盘 Nextcloud

华为云云耀云服务器L实例评测&#xff5c;部署私有网盘 Nextcloud 一、云耀云服务器L实例介绍1.1 云服务器介绍1.2 产品规格1.3 应用场景 二、云耀云服务器L实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Nextcloud3.1 Nextcloud 介绍3.2 Docker 环境搭建3.3 Nex…

趣味工具箱小程序源码

趣味工具箱小程序源码&#xff0c;支持功能去水印&#xff0c;精选壁纸&#xff0c;图片压缩&#xff0c;文字生成二维码&#xff0c;图片加水印&#xff0c;模拟来电&#xff0c;手持弹幕&#xff0c;掷骰子…等 使用小工具&#xff0c;一个小程序有几十个功能。 源码下载&am…

掌握 BERT:自然语言处理 (NLP) 从初级到高级的综合指南(1)

简介 BERT&#xff08;来自 Transformers 的双向编码器表示&#xff09;是 Google 开发的革命性自然语言处理 (NLP) 模型。它改变了语言理解任务的格局&#xff0c;使机器能够理解语言的上下文和细微差别。在本文[1]中&#xff0c;我们将带您踏上从 BERT 基础知识到高级概念的旅…

网络安全(黑客)——自学笔记

前言&#xff1a; 想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“…

【React】深入理解React组件状态State

目录 一、何为State二、如何定义State三、如何判断是否为State四、如何正确使用State1、用setState修改State2、State的更新是异步的①、代码示例 3、State更新会被合并①、组件状态例子②、当只需要修改状态title时&#xff0c;只需要将修改后的title传给setState③、React会合…

Go 语言高级网络编程

深入探讨 Go 语言的网络编程 简介 Go&#xff08;Golang&#xff09;中的网络编程具有易用性、强大性和乐趣。本指南深入探讨了网络编程的复杂性&#xff0c;涵盖了协议、TCP/UDP 套接字、并发等方面的内容&#xff0c;并附有详细的注释。 关键概念 1. 网络协议 TCP&#x…

代码小王子:国庆后上班的『表情包』神器

引言 哎哟&#xff0c;国庆七天乐就像手里握着的沙子&#xff0c;一不小心就从指间滑落了。&#x1f914; 小伙伴们&#xff0c;是不是感觉还没玩儿够&#xff0c;就要面对冷酷的现实——上班了&#xff01;&#x1f61f; 但是&#xff0c;咱们要以最饱满的热情&#xff0c;最…

力扣 53. 最大子数组和(C语言+分治递归、动态规划)

1. 题目 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。子数组 是数组中的一个连续部分。 2. 输入输出样例 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1…

java进阶-第8章-IO流

一、File类 概念&#xff1a;代表物理盘符中的一个文件或者文件夹。 常见方法&#xff1a; 方法名描述createNewFile()创建一个新文件。mkdir()创建一个新目录。delete()删除文件或空目录。exists()判断File对象所对象所代表的对象是否存在。getAbsolutePath()获取文件的绝对…

最新 SpringCloud微服务技术栈实战教程 微服务保护 分布式事务 课后练习等

SpringCloud微服务技术栈实战教程&#xff0c;涵盖springcloud微服务架构Nacos配置中心分布式服务等 SpringCloud及SpringCloudAlibaba是目前最流行的微服务技术栈。但大家学习起来的感受就是组件很多&#xff0c;不知道该如何应用。这套《微服务实战课》从一个单体项目入手&am…