C++的初步介绍,以及C++与C的区别
C++和C的区别
- C++又称C plus plus,且C++语言是对C语言的扩充,几乎支持所有的C语言语法;
- C语言:面向过程的语言(注重问题的解决方法和算法)
- C++:面向对象的语言 (求解的方法)
- 面向对象的三大特征:封装、继承、多态
- 抽象---->可以作为面向对象语言的第四个特征
C++对C的扩充
- 命名空间(解决命名冲突/命名污染问题)
- 函数重载(用于解决同一功能函数,可以定义相同名字,运算符重载)
- 引用(与C语言中的指针有关)
- 面向对象的特征
- 泛式编程
- 模板编程(模板类和模板函数)
- STL标准模板库
C++对C的兼容
- C++几乎支持所有C语法
- g++是C++使用的编译器,比gcc更加严格
- <stdio.h>头文件,在C++中仍然可以使用,C中所有头文件在C++中都可使用,将头文件中.h去掉,前面加c;
- C++文件的后缀是.cpp,C语言是.c后缀
C++程序
cout标准输入流对象
介绍
由ostream类提供的C++中的标准输出流的类对象,但是只有头文件不能直接使用cout,还需添加std,cout还包含在std命名空间中
运算
<<在C语言中为左移运算符,在C++中,ostream类对左移运算符进行了重载,重载后<<被称为运算符/输出运算符
cout的使用
- 不需要任何格式符,直接使用cout和<<
- cout << 输出的内容 <<endl; (endl就是换行)
使用cout指定格式的输出
- 通过函数,需要头文件
- 通过关键字
cin标准输入流对象
- 相当于C中scanf
- cin是由istream提供类对象,和cout一样,都存在于std标准命名空间中
命名空间
用于解决命名冲突和命名污染问题
- using 使用命名空间中的标识符
- std标准命名空
使用命名空间
全局引入命名空间
- 引入命名空间的位置,不包在任何花括号内
- 直接使用using引入整个命名空间中的标识符
- using namespace 命名空间名;
- 在该语句下的所有语句,都可以直接使用命名空间中的标识符
引入命名空间中的部分标识符
- using 命名空间名+标识符名;在该语句下的所有语句,可以使用命名空间中的部分标识符
- 在哪个位置使用,就在哪个位置使用域限定符
命名空间冲突问题
局部变量和命名空间冲突
引入了命名空间后,在使用时会默认使用局部变量,如果想要使用命名空间中的变量,使用命名空间名+域限定符;
两个命名空间中命名冲突问题
- 只引入某个命名空间,只能使用引入的命名空间中的标识符
- 直接在使用变量时,说明使用哪个命名空间中的标识符(命名空间名+域限定符)
全局变量和命名空间冲突问题
- 如果冲突,可以选择不引入命名空间,只能使用全局的变量
- 既要引入命名空间,又要使用全局变量,给全局变量前加域限定符(全局变量默认和匿名空间存放一起),当要访问命名空间中的变量时,使用命名空间名+域限定符
using的其他用法
- 引入命名空间
- using还可以用于类型重定义,类似于typedef
字符串/C++中的string类
C语言中不支持string类型
C++中封装了string类型,可以直接使用string变量
C++中字符串的定义
可以直接通过string实现
string str1 = "hello";
string str2 = str1;
C++风格和C语言风格字符串的转化
C向C++转化,无需任何操作
C++风格向C语言风格转化,需要c_str()或data()成员函数
string常用的函数
at()
访问指定下标的元素,使用at访问可以检查越界问题
length()/size()
返回字符串的长度
clear
清空字符串
empty
字符串的判空,空则返回1,否则返回0
字符串的输入
- cin函数不能获取带空格的字符串
- getline(cin,变量名) 可以获取带空格的字符串
C++中的bool
- C中不支持bool类型,C++中支持bool类型
- C++中的bool类型的默认值是0/false,默认的输出结果是数字的形式,仍然可以使用字母赋值
- true和false就是bool类型的值,是C++中的关键字
- 如果想要使用字母表示bool类型,加boolalpha关键字
- 如果想要恢复数字表示,noboolalpha
- bool类型的大小是1Byte,虽然bool类型只需要1bit,但是分配空间是以字节为单位进行分配
练习
定义一个命名空间Myspace,包含以下函数:将一个字符串中的所有单词进行反转,并输出反转后的结果。例如,输入字符串为"Hello World",输出结果为"olleH dlroW",并在主函数内测试该函数。
#include <iostream>
using namespace std;namespace Myspace {void turn(string *s); //函数声明
}
void Myspace::turn(string *s) //
{int len = (*s).length(); //s->length();char temp; //中间变量int i=0,j=0,k=0; //j用于保存开始位置,k用于保存单词结束的位置while(i<len) //控制循环到字符串的最后一个位置{//找单词的结束位置if(i==len-1||s->at(i)!=' '&&s->at(i+1)==' '){k=i; //k应该为o的下标}//找单词的起始位置if(i<len-1&&s->at(i+1)!=' '&&s->at(i)==' ') //i+1的位置不是空格,但是i的位置是空格{j = i+1; //j会停留在w的下标}while(j<k) //起始位置在结束位置前{temp = s->at(j);s->at(j) = s->at(k);s->at(k) = temp;j++;k--;}i++; //循环变量自增}
}
int main()
{string str = "Hello World";Myspace::turn(&str);cout << str << endl;return 0;
}
相关文章:
C++的初步介绍,以及C++与C的区别
C和C的区别 C又称C plus plus,且C语言是对C语言的扩充,几乎支持所有的C语言语法;C语言:面向过程的语言(注重问题的解决方法和算法)C:面向对象的语言 (求解的方法)面向对…...
JDK 核心jar之 rt.jar
一、JDK目录展示 二、rt.jar 简介 2.1.JAR释义 在软件领域,JAR文件(Java归档,英语:Java Archive)是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等&…...
el-form表单验证:只在点击保存时校验(包含select、checkbox、radio)
1、input类型 input类型 在el-input里加入:validate-event"false" <el-form-item label"活动名称" prop"name"><el-input v-model"ruleForm.name" :validate-event"false"></el-input> </el-form-i…...
Golang基本语法(上)
1. 变量与常量 Golang 中的标识符与关键字 标识符 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123。 关键字 关键字和保留字都不建议用作变量名: Go语言中有25个关键字。 此…...
jenkins使用
安装插件 maven publish over ssh publish over ssh 会将打包后的jar包,通过ssh推送到指定的服务器上,,在jenkins中设置,推送后脚本,实现自动部署jar包,, 装了这个插件之后,可以在项…...
多线程基础篇(包教包会)
文章目录 一、第一个多线程程序1.Jconsole观察线程2.线程休眠-sleep 二、创建线程三、Thread类及常见方法1. Thread 的常见构造方法2. Thread 的几个常见属性3. 启动线程 - start4. 中断线程5. 等待一个线程 四、线程状态五、线程安全问题(synchronized)(重点&#…...
Android/Java中,各种数据类型之间的互相转换,给出各种实例,附上中文注释
目录 1.字符串(String)转整数(int): 2.整数(int)转字符串(String): 3.字符串(String)转浮点数(float)&…...
机器学习知识点总结:什么是EM(最大期望值算法)
什么是EM(最大期望值算法) 在现实生活中,苹果百分百是苹果,梨百分白是梨。 生活中还有很多事物是概率分布,比如有多少人结了婚,又有多少人有工作, 如果我们想要调查人群中吸大麻者的比例呢?敏感问题很难得…...
漏洞挖掘和安全审计的技巧与策略
文章目录 漏洞挖掘:发现隐藏的弱点1. 源代码审计:2. 黑盒测试:3. 静态分析工具: 安全审计:系统的全面评估1. 渗透测试:2. 代码审计:3. 安全策略审查: 代码示例:SQL注入漏…...
[SpringBoot3]Web服务
五、Web服务 基于浏览器的B/S结构应用十分流行。SpringBoot非常适合Web应用开发,可以使用嵌入式Tomcat、Jetty、Undertow或Netty创建一个自包含的HTTP服务器。一个SpringBoot的Web应用能够自己独立运行,不依赖需要安装的Tomcat、Jetty等。SpringBoot可以…...
构建系统自动化-autoreconf
autoreconf简介 autoreconf是一个GNU Autotools工具集中的一个命令,用于自动重新生成构建系统的配置脚本和相关文件。 Autotools是一组用于自动化构建系统的工具,包括Autoconf、Automake和Libtool。它们通常用于跨平台的软件项目,以便在不同…...
Mysql之InnoDB和MyISAM的区别
InnoDB和MyISAM是MySQL数据库中两种常见的存储引擎,它们在功能和性能方面有一些明显的区别。下面是它们之间的详细解释和说明: 底层数据 存数据的时候,MyISAM是数据和索引分开存储,分为MYD和MYI 而InnoDB是数据即索引࿰…...
Unity 之 Transform.Translate 实现局部坐标系中进行平移操作的方法
文章目录 Translate 默认使用局部坐标也可以转换成世界坐标 Translate 默认使用局部坐标 在Unity中,Transform.Translate是用于在游戏对象的局部坐标系中进行平移操作的方法。这意味着它将游戏对象沿着其自身的轴进行移动,而不是世界坐标轴。这在实现物…...
PostgreSQL Error: sorry, too many clients already
Error PG的默认最大连接数是100. 如果超过100就会报错sorry, too many clients already Find show max_connections; SELECT COUNT(*) from pg_stat_activity; SELECT * FROM pg_stat_activity;Solution 提高最大连接数 ALTER SYSTEM SET max_connections 然后重启pg查看…...
Vue2(路由)
目录 一,路由原理(hash)二,路由安装和使用(vue2)三,路由跳转四,路由的传参和取值五,嵌套路由六,路由守卫最后 一,路由原理(hash&#…...
中介者模式-协调多个对象之间的交互
在深圳租房市场,有着许多的“二房东”,房主委托他们将房子租出去,而租客想要租房的话,也是和“二房东”沟通,租房期间有任何问题,找二房东解决。对于房主来说,委托给“二房东”可太省事了&#…...
Python框架【自定义过滤器、自定义数据替换过滤器 、自定义时间过滤器、选择结构、选择练习、循环结构、循环练习、导入宏方式 】(三)
👏作者简介:大家好,我是爱敲代码的小王,CSDN博客博主,Python小白 📕系列专栏:python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 📧如果文章知识点有错误…...
红黑树遍历与Redis存储
引言 在计算机科学领域,红黑树(Red-Black Tree)是一种自平衡的二叉查找树,它能在O(log n)的时间复杂度内完成插入、删除和查找操作。由于其高效性和可预测性的性能,红黑树在许多领域都得到广泛应用。本文将重点介绍红…...
前端处理图片文件的方法
在项目开发过程中,有一个需求,需要前端对上传的图片进行处理,以字符串的形式传给后端,实现效果如下: 1.上传图片的组件 在该项目中,使用了element plus组件库 <el-uploadv-model:file-list"fileL…...
「Java」《深入解析Java多线程编程利器:CompletableFuture》
《深入解析Java多线程编程利器:CompletableFuture》 一、 引言1. 对多线程编程的需求和挑战的介绍2. 介绍CompletableFuture的作用和优势 二. CompletableFuture简介1. CompletableFuture是Java中提供的一个强大的多线程编程工具2. 与传统的Thread和Runnable相比的优…...
Docker容器与虚拟化技术:容器运行时说明与比较
目录 一、理论 1.容器运行时 2.容器运行时接口 3.容器运行时层级 4.容器运行时比较 5.强隔离容器 二、问题 1.K8S为何难以实现真正的多租户 三、总结 一、理论 1.容器运行时 (1)概念 Container Runtime 是运行于 k8s 集群每个节点中ÿ…...
vue导出文件流获取附件名称并下载(在response.headers里解析filename导出)
导出文件流下载,拦截器统一处理配置 需求以往实现的方法(各自的业务层写方法)现在实现的方法(axios里拦截器统一配置处理)把文章链接复制粘贴给后端,让大佬自己赏阅。 需求 之前实现的导出都是各自的业务层…...
山东省图书馆典藏《乡村振兴战略下传统村落文化旅游设计》鲁图中大许少辉博士八一新书
山东省图书馆《乡村振兴战略下传统村落文化旅游设计》鲁图中大许少辉博士八一新书...
2023-08-19力扣每日一题-水题/位运算解法
链接: 2235. 两整数相加 题意: ab 解: ab 补一个位运算写法,进位是(a&b)<<1,不进位的计算结果为a^b 实际代码: #include<iostream> using namespace std; int sum(int num1, int n…...
Hadoop学习:深入解析MapReduce的大数据魔力之数据压缩(四)
Hadoop学习:深入解析MapReduce的大数据魔力之数据压缩(四) 4.1 概述1)压缩的好处和坏处2)压缩原则 4.2 MR 支持的压缩编码4.3 压缩方式选择4.3.1 Gzip 压缩4.3.2 Bzip2 压缩4.3.3 Lzo 压缩4.3.4 Snappy 压缩4.3.5 压缩…...
LRU淘汰策略执行过程
1 介绍 Redis无论是惰性删除还是定期删除,都可能存在删除不尽的情况,无法删除完全,比如每次删除完过期的 key 还是超过 25%,且这些 key 再也不会被客户端访问。 这样的话,定期删除和堕性删除可能都彻底的清理掉。如果…...
Kotlin 高阶函数详解
高阶函数 在 Kotlin 中,函数是一等公民,高阶函数是 Kotlin 的一大难点,如果高阶函数不懂的话,那么要学习 Kotlin 中的协程、阅读 Kotlin 的源码是非常难的,因为源码中有太多高阶函数了。 高阶函数的定义 高阶函数的…...
DL——week2
要学明白的知识点: np.dot()的作用 两个数组的点积,即对应元素相乘 numpy.dot(a,b,outNone) a: ndarray 数组 b: ndarray 数组 out: ndarray, 可选,用来保存dot()的计算结果 numpy Ndarray对象 N维数组对象ndarray&am…...
如何撰写骨灰级博士论文?这是史上最全博士论文指导!
博士论文的写作是博士研究生主要要完成的工作。由于存在着较高的难度,较长的写作周期,以及在创新,写作规范,实际及理论意义等方面有着比较高的要求,博士论文的完成一般说来是有相当难度的。一篇好的博士论文不仅是一本…...
08.SpringBoot请求相应
文章目录 1 请求1.1 Postman1.2 简单参数1.2.1 原始方式1.2.2 SpringBoot方式1.2.3 参数名不一致 1.3 实体参数1.3.1 简单实体对象1.3.2 复杂实体对象 1.4 数组集合参数1.4.1 数组1.4.2 集合 1.5 日期参数1.6 JSON参数1.7 路径参数 2 响应2.1 ResponseBody注解2.2 统一响应结果…...
东莞营销商城网站建设/服装品牌策划方案
实际操作步骤: 输入brew install nginx-full --with-rtmp-module命令出现以下报错: 需要先安装nginx服务器,运行命令brew tap homebrew/nginx,出现报错: 换一个github项目,即运行命令brew tap denji/nginx …...
右玉网站建设/数字营销成功案例
MSP432P401R 读取DHT11 串口发送温湿度 OLED显示温湿度 使用DHT11传感器采集温湿度信息,并将菜鸡的数据通过串口调试工具显示。...
网站建设 专家/优化大师软件大全
物联网技术发展趋势是LPWAN,其中尤其以NB-IoT和eMTC最为代表。NB-IoT和eMTC各有优劣,使用场景互有不同。 低功耗可以说是物联网技术的核心,本着关注低功耗的方向,适当了解NB IoT在整个LTE中的位置,NB-IoT的协议&#x…...
拱墅网站建设制作/seo网站自动发布外链工具
2.2 单页面应用介绍 什么是单页应用?引用百度百科:单页面应用的优缺点:优点:1、用户操作体验好,用户不用刷新页面,整个交互过程都是通过Ajax来操作。 2、适合前后端分离开发,服务端提供http接口…...
wordpress汇率插件/怎么把产品放到网上销售
sublime 格式化html css1.ctrl shift p2.输入install package,选择install package3.输入:HTML-CSS-JS Prettify,并安装该插件。4.重启sublime选中代码,然后按CtrlAltH对代码进行格式化sublime text如何显示函数列表CTRLR...
wordpress积分兑换插件/打开一个网站
19考研早已尘埃落定,我可以说是过了很长一阵才缓过来,今天还是决定简单地记录一下,既可以是一份回忆,也可以是一种鞭策。时间回退到2018年年初,那年我大四,当时的我已经签了工作,但和互联网压根…...