您的位置:首页 > 编程语言 > C语言/C++

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

2017-02-26 15:58 246 查看
在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等)相比并没有区别。

定义并初始化:

string str="chaibubble";


先定义后初始化:

string str1;
str1 ="chaibubble";


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

char str2[11] = "chaibubble";


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

char str3[11];
str3 ="chaibubble";


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

字符串类型操作

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

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定义字符数字。

string shuzu[4] = {str1,str2,str3,str4};


注意:

(1)一个字符串数组中可以包含若干个元素,每一个元素相当于一个字符串变量。

(2)并不要求元素都有相同的长度。

(3)字符串数组中的每一个元素的值只包含字符串本身的字符而不包括“\0”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐