当前位置: 首页 > news >正文

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&#xff0c;且C语言是对C语言的扩充&#xff0c;几乎支持所有的C语言语法&#xff1b;C语言&#xff1a;面向过程的语言&#xff08;注重问题的解决方法和算法&#xff09;C&#xff1a;面向对象的语言 &#xff08;求解的方法&#xff09;面向对…...

JDK 核心jar之 rt.jar

一、JDK目录展示 二、rt.jar 简介 2.1.JAR释义 在软件领域&#xff0c;JAR文件&#xff08;Java归档&#xff0c;英语&#xff1a;Java Archive&#xff09;是一种软件包文件格式&#xff0c;通常用于聚合大量的Java类文件、相关的元数据和资源&#xff08;文本、图片等&…...

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语言中标识符由字母数字和_(下划线&#xff09;组成&#xff0c;并且只能以字母和_开头。 举几个例子&#xff1a;abc, _, _123, a123。 关键字 关键字和保留字都不建议用作变量名&#xff1a; Go语言中有25个关键字。 此…...

jenkins使用

安装插件 maven publish over ssh publish over ssh 会将打包后的jar包&#xff0c;通过ssh推送到指定的服务器上&#xff0c;&#xff0c;在jenkins中设置&#xff0c;推送后脚本&#xff0c;实现自动部署jar包&#xff0c;&#xff0c; 装了这个插件之后&#xff0c;可以在项…...

多线程基础篇(包教包会)

文章目录 一、第一个多线程程序1.Jconsole观察线程2.线程休眠-sleep 二、创建线程三、Thread类及常见方法1. Thread 的常见构造方法2. Thread 的几个常见属性3. 启动线程 - start4. 中断线程5. 等待一个线程 四、线程状态五、线程安全问题(synchronized)&#xff08;重点&#…...

Android/Java中,各种数据类型之间的互相转换,给出各种实例,附上中文注释

目录 1.字符串&#xff08;String&#xff09;转整数&#xff08;int&#xff09;&#xff1a; 2.整数&#xff08;int&#xff09;转字符串&#xff08;String&#xff09;&#xff1a; 3.字符串&#xff08;String&#xff09;转浮点数&#xff08;float&#xff09;&…...

机器学习知识点总结:什么是EM(最大期望值算法)

什么是EM(最大期望值算法) 在现实生活中&#xff0c;苹果百分百是苹果&#xff0c;梨百分白是梨。 生活中还有很多事物是概率分布&#xff0c;比如有多少人结了婚&#xff0c;又有多少人有工作&#xff0c; 如果我们想要调查人群中吸大麻者的比例呢&#xff1f;敏感问题很难得…...

漏洞挖掘和安全审计的技巧与策略

文章目录 漏洞挖掘&#xff1a;发现隐藏的弱点1. 源代码审计&#xff1a;2. 黑盒测试&#xff1a;3. 静态分析工具&#xff1a; 安全审计&#xff1a;系统的全面评估1. 渗透测试&#xff1a;2. 代码审计&#xff1a;3. 安全策略审查&#xff1a; 代码示例&#xff1a;SQL注入漏…...

[SpringBoot3]Web服务

五、Web服务 基于浏览器的B/S结构应用十分流行。SpringBoot非常适合Web应用开发&#xff0c;可以使用嵌入式Tomcat、Jetty、Undertow或Netty创建一个自包含的HTTP服务器。一个SpringBoot的Web应用能够自己独立运行&#xff0c;不依赖需要安装的Tomcat、Jetty等。SpringBoot可以…...

构建系统自动化-autoreconf

autoreconf简介 autoreconf是一个GNU Autotools工具集中的一个命令&#xff0c;用于自动重新生成构建系统的配置脚本和相关文件。 Autotools是一组用于自动化构建系统的工具&#xff0c;包括Autoconf、Automake和Libtool。它们通常用于跨平台的软件项目&#xff0c;以便在不同…...

Mysql之InnoDB和MyISAM的区别

InnoDB和MyISAM是MySQL数据库中两种常见的存储引擎&#xff0c;它们在功能和性能方面有一些明显的区别。下面是它们之间的详细解释和说明&#xff1a; 底层数据 存数据的时候&#xff0c;MyISAM是数据和索引分开存储&#xff0c;分为MYD和MYI 而InnoDB是数据即索引&#xff0…...

Unity 之 Transform.Translate 实现局部坐标系中进行平移操作的方法

文章目录 Translate 默认使用局部坐标也可以转换成世界坐标 Translate 默认使用局部坐标 在Unity中&#xff0c;Transform.Translate是用于在游戏对象的局部坐标系中进行平移操作的方法。这意味着它将游戏对象沿着其自身的轴进行移动&#xff0c;而不是世界坐标轴。这在实现物…...

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(路由)

目录 一&#xff0c;路由原理&#xff08;hash&#xff09;二&#xff0c;路由安装和使用&#xff08;vue2&#xff09;三&#xff0c;路由跳转四&#xff0c;路由的传参和取值五&#xff0c;嵌套路由六&#xff0c;路由守卫最后 一&#xff0c;路由原理&#xff08;hash&#…...

中介者模式-协调多个对象之间的交互

在深圳租房市场&#xff0c;有着许多的“二房东”&#xff0c;房主委托他们将房子租出去&#xff0c;而租客想要租房的话&#xff0c;也是和“二房东”沟通&#xff0c;租房期间有任何问题&#xff0c;找二房东解决。对于房主来说&#xff0c;委托给“二房东”可太省事了&#…...

Python框架【自定义过滤器、自定义数据替换过滤器 、自定义时间过滤器、选择结构、选择练习、循环结构、循环练习、导入宏方式 】(三)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小王&#xff0c;CSDN博客博主,Python小白 &#x1f4d5;系列专栏&#xff1a;python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 &#x1f4e7;如果文章知识点有错误…...

红黑树遍历与Redis存储

引言 在计算机科学领域&#xff0c;红黑树&#xff08;Red-Black Tree&#xff09;是一种自平衡的二叉查找树&#xff0c;它能在O(log n)的时间复杂度内完成插入、删除和查找操作。由于其高效性和可预测性的性能&#xff0c;红黑树在许多领域都得到广泛应用。本文将重点介绍红…...

前端处理图片文件的方法

在项目开发过程中&#xff0c;有一个需求&#xff0c;需要前端对上传的图片进行处理&#xff0c;以字符串的形式传给后端&#xff0c;实现效果如下&#xff1a; 1.上传图片的组件 在该项目中&#xff0c;使用了element plus组件库 <el-uploadv-model:file-list"fileL…...

「Java」《深入解析Java多线程编程利器:CompletableFuture》

《深入解析Java多线程编程利器&#xff1a;CompletableFuture》 一、 引言1. 对多线程编程的需求和挑战的介绍2. 介绍CompletableFuture的作用和优势 二. CompletableFuture简介1. CompletableFuture是Java中提供的一个强大的多线程编程工具2. 与传统的Thread和Runnable相比的优…...

Docker容器与虚拟化技术:容器运行时说明与比较

目录 一、理论 1.容器运行时 2.容器运行时接口 3.容器运行时层级 4.容器运行时比较 5.强隔离容器 二、问题 1.K8S为何难以实现真正的多租户 三、总结 一、理论 1.容器运行时 &#xff08;1&#xff09;概念 Container Runtime 是运行于 k8s 集群每个节点中&#xff…...

vue导出文件流获取附件名称并下载(在response.headers里解析filename导出)

导出文件流下载&#xff0c;拦截器统一处理配置 需求以往实现的方法&#xff08;各自的业务层写方法&#xff09;现在实现的方法&#xff08;axios里拦截器统一配置处理&#xff09;把文章链接复制粘贴给后端&#xff0c;让大佬自己赏阅。 需求 之前实现的导出都是各自的业务层…...

​山东省图书馆典藏《乡村振兴战略下传统村落文化旅游设计》鲁图中大许少辉博士八一新书

​山东省图书馆《乡村振兴战略下传统村落文化旅游设计》鲁图中大许少辉博士八一新书...

2023-08-19力扣每日一题-水题/位运算解法

链接&#xff1a; 2235. 两整数相加 题意&#xff1a; ab 解&#xff1a; ab 补一个位运算写法&#xff0c;进位是(a&b)<<1&#xff0c;不进位的计算结果为a^b 实际代码&#xff1a; #include<iostream> using namespace std; int sum(int num1, int n…...

Hadoop学习:深入解析MapReduce的大数据魔力之数据压缩(四)

Hadoop学习&#xff1a;深入解析MapReduce的大数据魔力之数据压缩&#xff08;四&#xff09; 4.1 概述1&#xff09;压缩的好处和坏处2&#xff09;压缩原则 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无论是惰性删除还是定期删除&#xff0c;都可能存在删除不尽的情况&#xff0c;无法删除完全&#xff0c;比如每次删除完过期的 key 还是超过 25%&#xff0c;且这些 key 再也不会被客户端访问。 这样的话&#xff0c;定期删除和堕性删除可能都彻底的清理掉。如果…...

Kotlin 高阶函数详解

高阶函数 在 Kotlin 中&#xff0c;函数是一等公民&#xff0c;高阶函数是 Kotlin 的一大难点&#xff0c;如果高阶函数不懂的话&#xff0c;那么要学习 Kotlin 中的协程、阅读 Kotlin 的源码是非常难的&#xff0c;因为源码中有太多高阶函数了。 高阶函数的定义 高阶函数的…...

DL——week2

要学明白的知识点&#xff1a; np.dot()的作用 两个数组的点积&#xff0c;即对应元素相乘 numpy.dot(a,b,outNone) a: ndarray 数组 b: ndarray 数组 out: ndarray, 可选&#xff0c;用来保存dot&#xff08;&#xff09;的计算结果 numpy Ndarray对象 N维数组对象ndarray&am…...

如何撰写骨灰级博士论文?这是史上最全博士论文指导!

博士论文的写作是博士研究生主要要完成的工作。由于存在着较高的难度&#xff0c;较长的写作周期&#xff0c;以及在创新&#xff0c;写作规范&#xff0c;实际及理论意义等方面有着比较高的要求&#xff0c;博士论文的完成一般说来是有相当难度的。一篇好的博士论文不仅是一本…...

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 统一响应结果…...

东莞营销商城网站建设/服装品牌策划方案

实际操作步骤&#xff1a; 输入brew install nginx-full --with-rtmp-module命令出现以下报错&#xff1a; 需要先安装nginx服务器&#xff0c;运行命令brew tap homebrew/nginx&#xff0c;出现报错&#xff1a; 换一个github项目&#xff0c;即运行命令brew tap denji/nginx …...

右玉网站建设/数字营销成功案例

MSP432P401R 读取DHT11 串口发送温湿度 OLED显示温湿度 使用DHT11传感器采集温湿度信息&#xff0c;并将菜鸡的数据通过串口调试工具显示。...

网站建设 专家/优化大师软件大全

物联网技术发展趋势是LPWAN&#xff0c;其中尤其以NB-IoT和eMTC最为代表。NB-IoT和eMTC各有优劣&#xff0c;使用场景互有不同。 低功耗可以说是物联网技术的核心&#xff0c;本着关注低功耗的方向&#xff0c;适当了解NB IoT在整个LTE中的位置&#xff0c;NB-IoT的协议&#x…...

拱墅网站建设制作/seo网站自动发布外链工具

2.2 单页面应用介绍 什么是单页应用&#xff1f;引用百度百科&#xff1a;单页面应用的优缺点&#xff1a;优点&#xff1a;1、用户操作体验好&#xff0c;用户不用刷新页面&#xff0c;整个交互过程都是通过Ajax来操作。 2、适合前后端分离开发&#xff0c;服务端提供http接口…...

wordpress汇率插件/怎么把产品放到网上销售

sublime 格式化html css1.ctrl shift p2.输入install package&#xff0c;选择install package3.输入&#xff1a;HTML-CSS-JS Prettify&#xff0c;并安装该插件。4.重启sublime选中代码&#xff0c;然后按CtrlAltH对代码进行格式化sublime text如何显示函数列表CTRLR...

wordpress积分兑换插件/打开一个网站

19考研早已尘埃落定&#xff0c;我可以说是过了很长一阵才缓过来&#xff0c;今天还是决定简单地记录一下&#xff0c;既可以是一份回忆&#xff0c;也可以是一种鞭策。时间回退到2018年年初&#xff0c;那年我大四&#xff0c;当时的我已经签了工作&#xff0c;但和互联网压根…...