嵌入式入门Day38
C++ Day1
- 第一个C++程序
- C++中的输入输出
- 输出操作
- cout
- cin
- 练习
- 命名空间
- 使用方法
- 自定义命名空间
- 冲突问题
- C++对字符串的扩充
- C++风格字符串的使用
- 定义以及初始化
- C++风格字符串与C风格字符串的转换
- C++风格的字符串的关系运算
- 常用的成员变量
- 输入方法
- 布尔类型
- C++对堆区空间使用的扩充
- 作业

第一个C++程序
#include <iostream>using namespace std;
//命名空间的声明语句
//using:使用命名空间的关键字
//namespace:命名空间的关键字
//std:标准命名空间,系统提供的所有名字,都放放入到该命名空间中int main() //默认无参的主程序
{cout << "Hello World!" << endl;//使用iostream中的类对象cout输出数据hello world// <<:插入运算符(不是左移运算),C++重载的运算符,与cout搭配用于输出// endl:end line,结束该行,即换行return 0;
}
C++中的输入输出
输出操作
cout
- 在C++中, 向终端输出数据,使用的是ostream提供的一个类对象 cout,搭配<<插入运算符使用
- cout输出数据时,不需要使用格式控制符,会自动识别要输出的数据的数据类型
- cout输出数据时,可以级联输出数据,级联输出时,需要使用多个插入运算符
cin
- 在C++中输入使用的是istream提供的一个类对象 cin,搭配>>提取运算符使用
- cin输入的时候也不需要使用格式控制符,会自动识别
练习
使用cout输出斐波那契数列前20项
#include <iostream>using namespace std;int main()
{//初始化斐波那契数列前两项int numb[20] = {1 ,1};int i = 0;//后面的项均为前两项的和for( i = 2; i < 20; i++){numb[i] = numb[i - 1] + numb[i - 2];}//循环输出for( i = 0; i < 20; i++){cout << numb[i] << '\t';}cout << endl;return 0;
}
命名空间
- 命名空间是防止在多人协同开发过程中出现命名冲突的问题
- 相当于给定义的变量名函数名等标识符取一个“姓氏”
使用方法
- 使用时单独标注命名空间
- 为单个标识符声明,声明后将不需要为这个变量标注他的命名空间
- 直接声明整个命名空间,声明后每一个标识符都不需要再单独标志的了
#include <iostream>int main()
{//方法1std::cout << "hello" << std::endl;//方法2using std::cout;cout << "hello" << std::endl; //此处cout已经声明不需要标注命名空间,而endl需要//方法3using namespace std;cout << "hello" << endl; //整个空间均被声明,都可以直接使用return 0;
}
自定义命名空间
//定义格式
namespace 空间名 {... //各种定义
}
同一作用域下,可以定义多个重名的命名空间,他们都将会是同一空间,里面的变量名等不允许相同
冲突问题
如果不加命名空间标识的话,当声明的命名空间之中,或者和局部变量以及全局变量有冲突的时候,就不能使用后两种方法来访问了,只能用方法1标识此时使用的到底是哪个命名空间里面的变量
本文件中的局部变量和全局变量都默认放入匿名命名空间中
#include <iostream>namespace EKKO {int num = 520;
}
using namespace std;int main(void)
{int num = 1314;using namespace EKKO;//此后有两个num,使用是必须标注命名空间cout << EKKO::num << endl; //输出520cout << ::num << endl; //输出1314return 0;
}
C++对字符串的扩充
C语言中没有字符串类型,所有字符串的操作都是使用字符数组进行的
C++中也支持这种字符串,并且扩充了字符串类型string,使用时需要引入头文件 string
C++风格字符串的使用
定义以及初始化
#include <iostream>
#include <string>using namespace std;int main(void)
{//定义字符串string s1; cout << s1 << endl; //默认是空串//定义并初始化字符串string s2 = "HELLO";//C++风格的字符串支持使用=直接赋值//下面是其他的初始化方法string s3 = {"HELLO"};string s4("HELLO");string s5(5, 'A'); //该串的内容为:AAAAA//赋值操作s1 = "与众不同";//可以直接赋值s1 = s2+s3; //将会把s3拼接到s2后面并赋值给s1//注意使用字符串的加法操作时,必须有一个是字符串变量,如果两个都是字符串常量的话将会报错return 0;
}
C++风格字符串与C风格字符串的转换
#include <iostream>
#include <string>
#include <cstring> //同#include <string.h>
using namespace std;
int main(void)
{char str[20] = "Hello";//C风格可以直接转换为C++风格string s = str;//C++风格转换到C风格则需调用成员函数strcpy( str, s1.c_str());strcpy( str, s1.data());//两个成员函数的返回值都是 char *类型,指向字符串的开头,这样才符合C风格的使用方法//本质上而言就是C风格的函数无法识别string类,需要一个char *类型的参数return 0;
}
C++风格的字符串的关系运算
C++风格的字符串可以直接使用关系运算符
== 即可完成以前strcmp的功能
常用的成员变量
- size()或者length():求该字符串的实际长度
- 访问字符串的成员
- 使用成员函数 at() 完成,会进行下标越界检查
- 使用中括号运算符完成,不进行下标越界检查
- 判空:empty(),如果字符串为空,则返回真,否则返回假
- 清空:clear() 将当前字符串清空
- 尾插:push_back() 在字符串尾部插入一个字符
- 尾删:pop_back() 删除字符串尾部的那个字符
输入方法
- 不带空格的字符串可以直接使用cin输入
- 带空格的字符串需要使用函数getline()来完成
布尔类型
C++添加的新类型,是基本数据类型
bool类型的值只有两个:true、false
以上三个单词均为C++新添加的关键词
默认输入时bool类型只会输出0或者1,使用boolalpha关键字来修改cout可以设置为单词输出输出为true或者false,使用noboolalpha来取消
bool类型占一个字节
C++对堆区空间使用的扩充
引入了两个新的关键字来申请和释放堆区空间
new 和 delete
申请方法
//数据类型 *指针名 = new 数据类型; new是基于数据类型大小来申请的,而不是malloc的根据字节数来申请
int *p = new int;
//申请并且初始化
double *dptr = new double(3.13);
float *fptr = new float{33.33};//连续空间的申请
int *ptr = new int[5];
//连续申请并且初始化
int *sptr = new int[5]{1,2,3,4,5};//释放堆区空间
delete p;
p = NULL;
delete dptr;
dptr = NULL;
delete fptr;
fptr = NULL;
delete [] ptr;
ptr = NULL;
delete [] sptr;
sptr = NULL;
作业
要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩,分别完成空间的申请、成绩的录入、升序排序、成绩输出函数以及空间释放函数
#include <iostream>
#include <string>using namespace std;int main()
{//空间申请int *ptr = new int[5];//信息提示cout << "请输入学生的成绩:";//循环输入for(int i = 0; i < 5; i++) {cin >> ptr[i];}//冒泡排序for(int i = 0; i < 5; i++){for(int j = 1; j < 5-i; j++){if(ptr[j] > ptr[j-1]){int temp = ptr[j];ptr[j] = ptr[j-1];ptr[j-1] = temp;}}}//输出成绩for(int i = 0; i < 5; i++){cout << ptr[i] << " ";}cout << endl;//释放堆区空间delete [] ptr;ptr = NULL;return 0;
}相关文章:
嵌入式入门Day38
C Day1 第一个C程序C中的输入输出输出操作coutcin练习 命名空间使用方法自定义命名空间冲突问题 C对字符串的扩充C风格字符串的使用定义以及初始化C风格字符串与C风格字符串的转换C风格的字符串的关系运算常用的成员变量输入方法 布尔类型C对堆区空间使用的扩充作业 第一个C程序…...
探索Rancher服务发现机制:容器世界的“导航仪”
《探索Rancher服务发现机制:容器世界的“导航仪”》 在当今容器化技术蓬勃发展的时代,容器的大规模部署和微服务架构的广泛应用使得服务之间的相互发现与通信变得至关重要。Rancher作为一款功能强大的容器管理平台,其服务发现机制宛如一座无…...
【ROS2】Qt事件循环和ROS2订阅机制一起使用有什么注意事项?
1、简述 Qt的事件循环和ROS订阅回调函数都可能在阻塞函数中运行, 例如:Qt的QApplication::exec() 和 ROS的rclcpp::spin() 两个阻塞函数不能在同一个线程中使用,如果使用不当,会造成Qt不处理事件或者ROS2不处理订阅的回调函数。 2、多线程 一般 QApplication::exec() 运…...
donet (MVC)webAPI 的接受json 的操作
直接用对象来进行接收,这个方法还不错的。 public class BangdingWeiguiJiluController : ApiController{/// <summary>/// Json数据录入错误信息/// </summary>/// <param name"WeiguiInfos"></param>/// <returns></r…...
Qt 界面外观
一、前言 1、 一个完善的应用程序,不仅应该有实用的功能,还要有一个漂亮的外观,这样才能使应用程序更加友好,更加吸引用户。 2、 作为一个跨平台的UI开发框架,Qt提供了强大而灵活的界面外观设计机制。 3、 本篇会讲解&…...
aws(学习笔记第二十二课) 复杂的lambda应用程序(python zip打包)
aws(学习笔记第二十二课) 开发复杂的lambda应用程序(python的zip包) 学习内容: 练习使用CloudShell开发复杂lambda应用程序(python) 1. 练习使用CloudShell CloudShell使用背景 复杂的python的lambda程序会有许多依赖的包,如果不提前准备好这些python的…...
HTML课堂之搜索工具箱/讲师duluo
目录: 源码在最后 小提示: 1.养成打卡习惯没日多加练习即可提什能力 2.源码在最后,请先看完代码讲解,在尝试自己写,这样容易掌握 3.请勿复制粘贴,因为你没掌握,即使复制粘贴也学不会 课堂重点笔…...
当歌 - RSS 订阅分发平台开发
以下将详细介绍当歌平台的技术架构、功能实现以及相关代码逻辑。 一、项目概述 当歌是一个极简的 RSS 订阅分发平台,旨在为用户提供便捷的 RSS 管理和订阅服务,帮助用户轻松获取和分享最新资讯。 二、技术架构 后端语言:PHP 数据库&#…...
学习threejs,导入wrl格式的模型
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.VRMLLoader wrl模型加…...
使用GitLab+Jenkins搭建CICD执行环境
使用GitLabJenkins搭建CI\CD执行环境 前言什么是DevOps?什么是CI/CD?使用GitLabJenkins搭建CI\CD执行环境GitLab安装1. 安装和配置所需的依赖2. 下载并安装极狐GitLab3. 登录极狐GitLab 实例4.常用gitlab指令5.修改密码 Jenkins安装1.Jenkins 的主要特点…...
使用vue-pdf预览pdf和解决pdf电子签章显示问题
使用vue-pdf预览pdf和解决pdf电子签章显示问题 第一步:npm install vue-pdf 第二步页面使用vue-pdf <template><div class"pdf1"><Pdf v-for"i in numPages" :key"i" :src"src" :page"i" />…...
【Rust自学】11.3. 自定义错误信息
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 11.3.1. 添加错误信息 在 11.2. 断言(Assert) 中我们学习了assert!、assert_eq!和assert_ne!这三个宏,而这篇文章讲的就是它…...
05、Docker学习,常用安装:Mysql、Redis、Nginx、Nacos
Docker学习,常用安装:Mysql、Redis、Nginx、Nacos 一、Docker安装Mysql 1、docker search mysql ##查找mysql版本都有哪些 2、docker pull mysql:5.6 ##下载5.6版本的mysql镜像 3、docker run -p 13306:3306 --name mysql ##运行…...
RabbitMQ高级篇之MQ可靠性 数据持久化
文章目录 消息丢失的原因分析内存存储的缺陷如何确保 RabbitMQ 的消息可靠性?数据持久化的三个方面持久化对性能的影响持久化实验验证性能对比Spring AMQP 默认持久化总结 消息丢失的原因分析 RabbitMQ 默认使用内存存储消息,但这种方式带来了两个主要问…...
leetcode 2274. 不含特殊楼层的最大连续楼层数 中等
Alice 管理着一家公司,并租用大楼的部分楼层作为办公空间。Alice 决定将一些楼层作为 特殊楼层 ,仅用于放松。 给你两个整数 bottom 和 top ,表示 Alice 租用了从 bottom 到 top(含 bottom 和 top 在内)的所有楼层。另…...
Tauri教程-基础篇-第二节 Tauri的核心概念上篇
“如果结果不如你所愿,就在尘埃落定前奋力一搏。”——《夏目友人帐》 “有些事不是看到了希望才去坚持,而是因为坚持才会看到希望。”——《十宗罪》 “维持现状意味着空耗你的努力和生命。”——纪伯伦 Tauri 技术教程 * 第四章 Tauri的基础教程 第二节…...
大风车excel:怎么把题库导入excel?题库导入excel
高效管理试题库:如何批量导入试题到 Excel? 在教育培训、学校管理以及在线学习平台中,试题库的管理是核心工作之一。如何快速、准确地将试题导入到 Excel 表格中,成为许多教育工作者和开发者的迫切需求。本文将围绕“题库导入 Ex…...
Java 兼容读取WPS和Office图片,结合EasyExcel读取单元格信息
在Java开发中,处理Excel文件中的图片(包括浮动图片和嵌入图片)是一个常见的需求。本文将介绍如何使用EasyExcel和Apache POI库来读取Excel文件中的图片,并将其与数据进行关联。 1. 引言 在许多应用场景中,Excel文件不…...
电脑硬盘系统迁移及问题处理
一、系统迁移准备 1、确认你的电脑主板是否支持安装两块硬盘,如电脑主板有多个M2硬盘接口,我们将新硬盘安装到主板上,原来的老硬盘安装在第二个接口上,主板只有一个M2接口的话可以使用移动硬盘盒。 2、新硬盘安装好后,我们进入原来的系统,在 此电脑–右键–管理–磁盘管…...
网关 + Nacos配置管理
网关 网关:就是网络的关口,负责请求的路由、转发、身份校验。 网关路由 新建网关模块gateway引入相关依赖 <!--网关--> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
C# winform教程(二)----checkbox
一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...
如何做好一份技术文档?从规划到实践的完整指南
如何做好一份技术文档?从规划到实践的完整指南 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...
Java多线程实现之Runnable接口深度解析
Java多线程实现之Runnable接口深度解析 一、Runnable接口概述1.1 接口定义1.2 与Thread类的关系1.3 使用Runnable接口的优势 二、Runnable接口的基本实现方式2.1 传统方式实现Runnable接口2.2 使用匿名内部类实现Runnable接口2.3 使用Lambda表达式实现Runnable接口 三、Runnabl…...
职坐标物联网全栈开发全流程解析
物联网全栈开发涵盖从物理设备到上层应用的完整技术链路,其核心流程可归纳为四大模块:感知层数据采集、网络层协议交互、平台层资源管理及应用层功能实现。每个模块的技术选型与实现方式直接影响系统性能与扩展性,例如传感器选型需平衡精度与…...
【2D与3D SLAM中的扫描匹配算法全面解析】
引言 扫描匹配(Scan Matching)是同步定位与地图构建(SLAM)系统中的核心组件,它通过对齐连续的传感器观测数据来估计机器人的运动。本文将深入探讨2D和3D SLAM中的各种扫描匹配算法,包括数学原理、实现细节以及实际应用中的性能对比,特别关注…...
