C++ 中的字符串有两种形式:(1)C风格的字符串 (2)C++引入的 string 类型的字符串。
(1)C风格的字符串
C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。
C风格的字符串的声明和赋值:
char name[25] = { 'z','h','a','n','g','s','a','n'};
或者
char name[] = "zhangsan";
字符串结尾存在‘\0’的结束符,所以也可以写成:
char name[] = "zhangsan\0";
操作C风格的字符串往往和 #include <string> 一起使用,在标准库string中,一些函数比较使用,比如:
获取字符数组的长度:
strlen(name)
比较两个字符串:
strcmp(name1, name2)
将name2拷贝到name1中(将name1直接覆盖,name1原有字符串被覆盖):
strcpy_s(name1, strlen(name2) + 1, name2)
将两个字符串连接起来(将name2连接到name1的结尾):
strcat_s(name1, strlen(name1) + strlen(name2) + 1, name2)
返回值是指针,指向字符数组,字符‘h’第一次出现的地方:
char* np = strchr(name, 'h');
cout << *np << endl;
*np的值就是h。
(1)C++中的string
C++ 标准库提供了 string 类型,string 同样提供了一些能力,比如:
获取name的长度:
name.size();
或
name.length();
两字符串连接:
name1 = name1 + name2;
将name2复制到name1
name1 = name2;
字符串的比较:
int result = name1.compare(name2);
如果result > 0,那么name1 > name2;
如果result < 0,那么name1 < name2;
如果result = 0,那么name1 = name2;
字符串追加,将字符串“aa”追加到name的结尾:
name.append("aa");
string库中还有其它功能,这里就不举例了。
[本章完...]