【C/C++】基础知识之string字符串

news2024/11/13 9:08:10

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c++系列专栏:C/C++零基础到精通 🔥

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

在这里插入图片描述

c语言内容💖:

专栏:c语言之路重点知识整合

【c语言】全部知识点总结


目录

  • 一、回顾C语言中的字符串
    • 1.修改字符
    • 2.比较字符串
  • 二、C++中的字符串
    • 1.修改字符
    • 2.字符串比较
    • 3.字符串拼接
    • 4.字符串截取
    • 5.字符串长度(大小)
    • 6.字符串转换为const char*并返回
  • 三、C语言和C++中字符串的各种区别

先来复习C语言中的字符串:

【c语言】字符串的基本概念 | 字符串存储原理

【c语言】字符串常用函数组件化封装

一、回顾C语言中的字符串

1.修改字符

定义一个char类型指针p指向字符串Tian

C语言中字符串是常量,不能通过指针修改字符串中的字符:

	char* p = (char*)"Tian";
	
	 p[1] = 'q';	

这段代码会在运行时出错(编译时不会):

在这里插入图片描述

再定义一个指针p2指向字符串Xi

通过改变指针的指向可以改变输出的字符串:

	char* p2 = (char*)"Xi";

	p2 = (char*)"Studio";

指针p2的值更改为指向字符串字面值“Studio”的第一个字符

在这里插入图片描述

p和p2在栈区被创建,由于字符串在程序刚开始运行时在常数区被创建,所以p、p2可以直接来指向Hello\0。

再定义一个字符数组arr,存放字符串TianXi(字符数组与字符串的区别是 是否有'\0'

char arr[7] = "TianXi";

	arr[1] = 'V';
	cout << "arr:" << arr << endl;

通过对字符数组arr的第二个字符修改,可以得到修改后的字符数组

在这里插入图片描述

如果直接使用数组名修改字符数组:

	arr="123";

将会产生编译错误,不可以对数组分配新的字符串

数组名是地址常量,字符串是字符串常量,将一个字符串常量赋给另一个地址常量,会出现左值不可更改的错误

2.比较字符串

字符串比较是对两个或多个字符串进行逐个字符的比较判断是否相等

strcmp() 函数根据两个字符串的第一个不同字符的 ASCII 码对比大小

返回 1 代表 大于关系 ; 返回 0代表等于关系;返回-1代表小于关系

【c语言】字符串比较知识点

通过库函数strcmp函数进行字符串的比较:

	if (strcmp(p, p2)==0)
	{
		cout << "p==p2" << endl;
	}
	else
	{
		cout << "p!=p2" << endl;
	}

直接使用==比较的是地址 不是字符串

	if(p==p2)	

二、C++中的字符串

C++中内置了字符串string类型

需要包含字符串的头文件#include <string>再打开标准命名空间using namespace std;

然后就可以直接使用string定义字符串:

#include <iostream>
#include <string>		//包含字符串的头文件
using namespace std;	//打开标准命名空间
int main()
{
	string str = "ztx";
	string str1 = "zox";
	return 0;
}

1.修改字符

直接通过str1[1] = 't';就可以修改字符串中的某个字符

在这里插入图片描述

2.字符串比较

直接通过字符串的名字就可以进行对字符串的比较:

	if (str == str1)
	{
		cout << "str==str1" << endl;
	}
	else
	{
		cout << "str!=str1" << endl;
	}

在这里插入图片描述

3.字符串拼接

在C++中,不需要再使用C语言中的标准库函数strcat,直接使用+号就可以完成字符串拼接的操作

	string str3 = "TianXi";
	str3=str3+" Studio";	//str3 += " Studio";
	cout << str3 << endl;

在这里插入图片描述

4.字符串截取

需要使用到.substr函数

在这里插入图片描述

	string str4 = str3.substr(2, 5);
	cout << str4 << endl;

在这里插入图片描述

5.字符串长度(大小)

使用.length().size()函数

	string str3 = "TianXi";
	cout << endl << "str3的长度:" << str3.length() << " " << str3.size() << endl;

在这里插入图片描述

6.字符串转换为const char*并返回

使用.c_str函数

	str3=str3.c_str();
	cout << str3 << endl;

在这里插入图片描述

const常量不可修改: 产生不可修改的左值错误

在这里插入图片描述

三、C语言和C++中字符串的各种区别

C语言:字符串是以字符数组的形式存储的,以'\0'结尾

字符串比较通常使用strcmp函数,字符串拼接使用strcat函数,字符串长度计算使用strlen函数

C++:字符串类型被视为对象,并且C++STL库中提供了string类来实现字符串操作。与C语言不同,在C++中使用string类时可以使用运算符重载函数来完成字符串操作

例如使用+运算符进行字符串连接,使用==运算符比较两个字符串是否相等,并使用size()函数获取字符串的长度


在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)

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

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

相关文章

整数规划在数学建模中的应用及MATLAB实现

2023年9月数学建模国赛期间提供ABCDE题思路加Matlab代码,专栏链接(赛前一个月恢复源码199,欢迎大家订阅):http://t.csdn.cn/Um9Zd 目录 整数规划基本概念 整数规划原理 MATLAB实现 1. 使用intlinprog求解整数规划问题 数学建模案例&#xff1a;设备选购优化 问题建模 MA…

时间序列预测 | Matlab基于鲸鱼算法优化随机森林(WOA-RF)与随机森林(RF)的时间序列预测对比

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 时间序列预测 | Matlab基于鲸鱼算法优化随机森林(WOA-RF)与随机森林(RF)的时间序列预测对比 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %---------------…

算法刷题-数组-二分查找

算法刷题-数组-二分查找 二分查找思路二分法第一种写法二分法第二种写法 总结相关题目推荐python语言版本 二分查找 力扣题目链接 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&…

数据结构与算法系列之快速排序

&#x1f497; &#x1f497; 博客:小怡同学 &#x1f497; &#x1f497; 个人简介:编程小萌新 &#x1f497; &#x1f497; 如果博客对大家有用的话&#xff0c;请点赞关注再收藏 &#x1f31e; 快速排序 快速排序是任取待排序元素序列中的某元素作为基准值&#xff0c;按照…

【QT】TCP/UDP详解及实现

TCP/UDP TCP/IP模型TCP协议头部格式三次握手四次挥手 UDP协议头部格式 Socket编程tcpudp代码实现服务端&#xff1a;客户端&#xff1a; 总结 TCP/IP模型 TCP模型是一个常见的网络协议参考模型&#xff0c;也称为TCP/IP模型或互联网模型。它是指TCP/IP协议族中的一组协议&…

总结:Linux系统上面定时备份mysql指定数据库的解决方案

总结&#xff1a;Linux系统上面定时备份mysql指定数据库的解决方案 一Mysql数据库本身就自带备份数据库命令1.mysql本身自带备份数据库为一个sql文件的命令&#xff0c;只需要在操作系统的终端里面执行就好了 二Linux和Unix操作系统都自带一个定时任务执行器&#xff1a;cronta…

浅结反静态调试2

文章目录 SMC 自解码什么是SMC&#xff1f;原理示例动调 SMC 自解码 什么是SMC&#xff1f; 简而言之&#xff0c;就是程序中的部分代码在运行之前被加密成一段数据&#xff0c;不可反编译&#xff0c;通过程序运行后执行相关的解码功能&#xff0c;对加密的代码数据进行动态…

Linux :: vim 编辑器的初次体验:三种 vim 常用模式 及 使用:打开编辑、退出保存关闭vim

前言&#xff1a;本篇是 Linux 基本操作篇章的内容&#xff01; 笔者使用的环境是基于腾讯云服务器&#xff1a;CentOS 7.6 64bit。 学习集&#xff1a; C 入门到入土&#xff01;&#xff01;&#xff01;学习合集Linux 从命令到网络再到内核&#xff01;学习合集 目录索引&am…

配置Linux操作系统主机名及网络设置

上一篇我们讲到了如何克隆虚拟机&#xff0c;三台虚拟机Spark01、Spark02和Spark03默认为动态IP地址&#xff0c;若后续重启系统后IP地址便会发生改变&#xff0c;非常不利于实际开发&#xff0c;且虚拟机Spark02和Spark03是通过克隆虚拟机Spark01创建的&#xff0c;这会导致这…

软件测试银行项目到底“香”到哪里?

为什么做金融类软件测试&#xff1f; 做金融类软件测试的原因有以下几个&#xff1a; 保障客户资产安全&#xff1a;金融类软件通常涉及大量的客户财产和敏感信息&#xff0c;因此软件测试可以帮助发现潜在的漏洞和风险&#xff0c;从而确保客户的资产和信息得到充分的保护。 …

超详细IDEA:MavenWeb项目配置Tomcat

文章目录 附IDEA创建MavenWeb项目教程附Windows 10安装配置Tomcat教程一、插件配置Tomcat方式二、IDEA部署本地Tomcat方式 附IDEA创建MavenWeb项目教程 超详细IDEA创建MavenWeb项目教程 附Windows 10安装配置Tomcat教程 超详细Windows 10安装配置Tomcat教程 一、插件配置To…

LeetCode: 238. 除自身以外数组的乘积

目录 1. 解法一&#xff1a;时&#xff1a;O(N) &#xff0c;空&#xff1a;O(N) 2. 解法二&#xff1a;(解法一的空间优化) 时&#xff1a;O(N)&#xff0c;空&#xff1a;O(1) 3. 解法三 原题链接&#xff1a;238. 除自身以外数组的乘积 - 力扣&#xff08;Leetcode&#x…

java SSM 教务管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM 教务管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/…

网工内推 | 云方向招运维,云计算HCIE认证优先,最高22k

01 东华软件股份公司 招聘岗位&#xff1a;运维系统工程师&#xff08;云平台&#xff09; 职责描述&#xff1a; 1、 负责华为云平台Huawei CloudStack &#xff0c;FusionStorage分布式存储的维护&#xff0c;优化和故障处理&#xff1b; 2、 负责云平台上VDC、ECS、DDM、R…

1 Linux网络虚拟化

Linux网络虚拟化 文章目录 Linux网络虚拟化前言一、network namespace1.1 初识network namespace1.2 配置network namespace 二、veth pair三、容器与host veth pair的关系3.1 方法一3.2 方法二3.2 方法三 四、 Linux bridge4.1 Linux bridge初体验4.2 把IP让给Linux bridge4.3…

RestCloud-新一代(智能)全域数据集成平台

新一代智能全域数据集成平台 一、介绍1.1 企业级数据集成架构面临的痛点1.2 RestCloud说明1.3 重构企业数据融合架构&#xff0c;解决各种复杂、即时、高合规的数据集成需求1.4 (智能)全域数据集成平台1.5 300数据及应用连接器轻松汇聚全域数据 二、产品简介2.1 功能特性2.2 产…

Pytorch入门(五)使用ResNet-18网络训练常规状态下的CIFAR10数据集

本文采用ResNet-18PytorchCIFAR-10实现深度学习的训练。 文章目录 一、CIFAR-10 数据集介绍二、ResNet 神经网络的介绍1.ResNet 的网络模型2.本文用到的ResNet网络结构3.残差块的的解释4.ResNet神经网络的优缺点 三、ResNet-18 代码实现四、ResNet-18 训练 CIFAR-10数据集五、…

编写 OPC UA Compile的模型设计文件

OPC Foundation 开源了一个模型编译工具-UA ModelCompiler.它接受下面两种信息模型格式&#xff1a; NodeSet2.xmlModelDesign.xml 看来ModelDesign 是专门为UA ModelCompiler设计的&#xff0c;采用了分层结构描述&#xff0c;它比NodeSet2 可读性更好一点。适合使用普通文本…

【MySql】数据库的备份与恢复

文章目录 前言备份mysqldump还原source注意事项查看连接情况 前言 对与数据库的备份与恢复该怎么去做呢&#xff1f; Linux下对于文件或目录的备份&#xff0c;直接拷贝一份&#xff0c;留着备用&#xff0c;对于备份&#xff0c;比较简单的做法会就是直接打包拷贝一下&#x…

数据结构常用知识点整理(java版)(--修改中--)

目录 一、逻辑结构 1、栈 2、队列 顺序队列 循环队列 链式队列 &#xff08;相当于只能尾进头出的单链表&#xff09; 双端队列 (Deque) 3、数组 4、链表 5、树 二叉树 满二叉树 完全二叉树 二叉查找树&#xff1a; (ADT Tree) 红黑树&#xff1a; B树&#xf…