前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 字符串类,字符串变量与字符串数组

C++ 字符串类,字符串变量与字符串数组

作者头像
chaibubble
发布2022-05-07 09:22:50
4370
发布2022-05-07 09:22:50
举报
文章被收录于专栏:深度学习与计算机视觉

在C语言中,应用字符串需要定义字符数组,字符串需要存放在字符数组中。然后利用各种字符串操作函数对其操作。 http://blog.csdn.net/chaipp0607/article/details/56676791

但是这种方式存在一些弊端,比如字符数组的大小是固定的,在进行字符连接或字符复制时,需要计算字符串与字符数组的长度,否则就可能发生一部分字符超出数组范围。

为此,C++提供了一种新的数据类型——字符串类型(string),实际上在C++的基本数据类型中并不包含string,他是在C++标准库中声明的一个字符串类,用这个类实现字符串的定义。

在定义string型变量时,需要加上#include <string>的头文件。 注意:不是string.h,因为该头文件为C语言的,并没有string类型,具体的介绍在上文链接中有。

定义与赋值

使用字符串类后,可以直接使用string类型定义字符串,此时string与C++基本数据类型(int,double等)相比并没有区别。 定义并初始化:

代码语言:javascript
复制
string str="chaibubble";

先定义后初始化:

代码语言:javascript
复制
string str1;
str1 ="chaibubble";

利用字符数组时,可以这样定义和初始化一个字符串:

代码语言:javascript
复制
char str2[11] = "chaibubble";

但是先定义后初始化是错误的

代码语言:javascript
复制
char str3[11];
str3 ="chaibubble";

因为str3不是字符串变量,而是数组名。

字符串类型操作 在使用字符数组时,我们需要用各种操作函数实现字符串操作,比如strcat等,但是应用字符串类后,可以使用简单的运算符即可完成操作。

代码语言:javascript
复制
		string str1="chai";
		string str2;
		str2 ="bubble";
		string str3 =str2;
		string str4 =str1+str3;
		if (str3==str2)
		{
			cout<<"str3==str2"<<endl;
		}
		if (str1!=str2)
		{
			cout<<"str1!=str2"<<endl;
		}
		if (str1>str2)
		{
			cout<<"str1>str2"<<endl;
		}

在上面的程序中可以看到,复制直接使用“=”,连接使用“+”,关系运算使用==(等于),>(大于),<(小于),!=(不等于),>=(大于等于)。这是因为在string头文件中已经对这些运算符进行了重载,使他们能用于string类对象的运算

http://blog.csdn.net/chaipp0607/article/details/55281496

其中大于或小于的比较与字符串比较函数 strcmp 的功能是相同的,大小的依据是直到出现第一个不同的字符时,比较该字符的ASCII码大小。

字符串数组

既然string类型与基本数据类型没什么区别,那么也可以用string定义字符数字。

代码语言:javascript
复制
string shuzu[4] = {str1,str2,str3,str4};

注意: (1)一个字符串数组中可以包含若干个元素,每一个元素相当于一个字符串变量。 (2)并不要求元素都有相同的长度。 (3)字符串数组中的每一个元素的值只包含字符串本身的字符而不包括“\0”。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档