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

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

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

在这里插入图片描述

c语言内容💖:

专栏: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()函数获取字符串的长度


在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天喜Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值