在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)字符串数组中的每一个元素的值只包含字符串本身的字符而不包括“ ”。