嵌入式养成计划-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 <iostream>
//#预处理
//include 包含 相应的头文件
//iostream 输入输出流  i--input  o--outusing 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//十进制  无//十六进制 0xint b = 100, b2 = 0b100, b3 = 0100, b4 = 0x100;cout << "b = " << b << endl; //结果100cout << "b = " << dec << b << endl; //dec是以10进制方式 100cout << "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 == 0bool 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 astring str2 = "abcdef";  //初始化cout << "str2 = " << str2 << endl;string str3 = str2;  //把str2初始化str3cout << "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;elsecout << "str1 < str2" << endl;
}
elsecout << "sr1 == str2" << endl;

77.7 字符串的输入

#include <iostream>
using namespace std;
int main()
{string str;cin >> str; //cin以空格作为结束cout << "str = " << str << endl;//如果想包含空格 getlinegetline(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:使用命名空间里的某个名字,则后面程序中就不需要加命名空间名以及限定符,//但是没有表明的名字,则还要循序方法1cout << "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++;//判断其他字符elseoth++;}cout << "大写字母个数 : " << da << endl;cout << "小写字母个数 : " << xiao << endl;cout << "数字个数 : " << nums << endl;cout << "空格个数 : " << spa << endl;cout << "其他字符个数 : " << oth << endl;return 0;
}

思维导图

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue中如何进行分布式日志收集与日志分析(如ELK Stack)

在Vue中实现分布式日志收集与日志分析&#xff08;使用ELK Stack&#xff09; 日志收集和分析在现代应用程序中是至关重要的&#xff0c;它们可以帮助开发人员监视和诊断应用程序的行为&#xff0c;从而提高应用程序的稳定性和性能。ELK Stack&#xff08;Elasticsearch、Logs…

UG\NX二次开发 特征选择对话框 UF_UI_select_feature

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 感谢粉丝订阅 感谢 qq_42007619 订阅本专栏,非常感谢。 简介: UG\NX二次开发 特征选择对话框 UF_UI_select_feature 效果: 代码: #include <vector>…

竞赛选题 深度学习 python opencv 动物识别与检测

文章目录 0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存…

漏洞复现-易思无人值守智能物流文件上传

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

Puppeteer基础知识(一)

Puppeteer基础知识&#xff08;一&#xff09; Puppeteer基础知识&#xff08;一&#xff09;一、简介二、其他一些自动化测试工具三、安装与使用四、Puppeteer常用命令五、常见问题解决&#xff1a; 一、简介 Puppeteer 是一个强大而灵活的工具&#xff0c;可以用于网页爬虫、…

黑马JVM总结(二十七)

&#xff08;1&#xff09;synchronized代码块 synchronized代码块的底层原理&#xff0c;它是给一个对象进行一个加锁操作&#xff0c;它是如何保证如果你出现了synchronized代码块中出现了问题&#xff0c;它需要给这个对象有一个正确的解锁操作呢&#xff0c;加锁解锁是成对…

【用unity实现100个游戏之14】Unity2d做一个建造与防御类rts游戏

前言 欢迎来到本次教程&#xff0c;我将为您讲解如何使用 Unity 引擎来开发一个建造与防御类 RTS&#xff08;即实时战略&#xff09;游戏。 在本教程中&#xff0c;我们将学习如何创建 2D 场景、设计 2D 精灵、制作 2D 动画、响应用户输入、管理游戏数据、以及其他有关游戏开…

进程间通信-信号概述

一、信号的概念 信号是一种进程间通信的机制&#xff0c;用于在软件层面上对异步事件进行通知。信号通常是由操作系统或其他进程发送给目标进程的一种通知&#xff0c;以指示发生了某种事件或条件。这样的事件可能包括硬件异常、用户输入、定时器到期、子进程状态变化等。 引发…

C++笔记之信号量、互斥量与PV操作

C笔记之信号量、互斥量与PV操作 文章目录 C笔记之信号量、互斥量与PV操作1.信号量概念2.信号量例程一3.信号量例程二4.信号量例程三5.互斥量6.PV操作概念7.PV操作详解——抄自&#xff1a;https://mp.weixin.qq.com/s/vvjhbzsWQNRkU7-b_dURlQ8.PV操作的英文全称 1.信号量概念 …

【一、灵犀考试系统项目设计、框架搭建】

一、创建数据库 1、打开power designer&#xff0c;新建数据库模型 2、新建数据表&#xff0c;以及关系 【注意】 图片的类型有两种&#xff1a;varbinary 和 image varbinary : 二进制字节流&#xff0c;可以自动控制长度 image : 最大可放2G图片 3、创建数据库&#…

FastThreadLocal 快在哪里 ?

FastThreadLocal 快在哪里 &#xff1f; 引言FastThreadLocalset如何获取当前线程私有的InternalThreadLocalMap &#xff1f;如何知道当前线程使用到了哪些FastThreadLocal实例 ? get垃圾回收 小结 引言 FastThreadLocal 是 Netty 中造的一个轮子&#xff0c;那么为什么放着…

Doris 2.0.1 DockerFile版 升级实战

1、Doris 2.0.1 DockerFile 的制作 参考 Doris 2.0.1 Dockerfile制作-CSDN博客 2、之前的Doris 集群通过 Docker容器进行的部署&#xff0c;需提前准备好Doris2.0.1的镜像包 参考&#xff1a; 集群升级 - Apache Doris Doris 升级请遵守不要跨两个及以上关键节点版本升级的…