c++字符串
C++是一种高效、底层的面向对象编程语言。它支持多种数据类型,其中包括字符串类型。字符串是计算机编程中最常用的数据类型之一,因为它们允许开发人员存储和操作文本和其他类型的数据。在这篇文章中,我们将从多个角度解析C++字符串类型,包括它们如何声明、初始化、操作以及在C++中常见的字符串函数。
声明字符串
在C++中声明字符串需要注意到,本质上它们是字符数组,或者说是char类型的数组。在声明字符串时,必须指定字符串的长度。有三种方法可以声明字符串:
一、使用字符数组声明字符串。
```
char str[100];
```
这将声明一个名为“str”的字符数组,最大长度为100。
二、使用数组初始化来声明字符串。
```
char str[] = "This is a string";
```
在这种情况下,编译器会自动计算字符串的长度,并根据字符串的长度确定数组的大小。
三、使用C++中的string类声明字符串。
```
#include
using namespace std;
string str = "This is a string";
```
这需要包含头文件string,并使用命名空间std。可以使用类似于其他类型的变量来声明字符串。
字符串初始化
初始化字符串的方法有多种,可以使用上面提到的第二种方法,在声明字符串时直接对其进行初始化。另外,还可以将字符串初始化为另一个字符串的值,也可以将字符串值逐个字符输入。
```
char str1[100] = "This is a string";
char str2[100] = {'T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ',
's', 't', 'r', 'i', 'n', 'g', '\0'};
char str3[100];
strcpy(str3, str1);
```
上面的第一个示例使用数组初始化的方法初始化了字符串,第二个示例直接给出了字符串中每个字符,最后一个示例使用了strcpy函数将原始字符串复制到另一个字符串中。
字符串操作
在C++中,有多种字符串操作,可以方便地操作和处理字符串。
一、字符串连接
可以使用+运算符连接两个字符串,也可以使用字符串函数strcat。
```
char s1[100] = "Hello ";
char s2[100] = "World";
```
```
//使用+运算符连接两个字符串
char result1[100];
strcpy(result1, s1);
strcat(result1, s2);
cout << result1; //输出“Hello World”
```
```
//使用字符串函数strcat连接两个字符串
char result2[100];
strcpy(result2, s1);
strcat(result2, s2);
cout << result2; //输出“Hello World”
```
二、字符串比较
可以使用==运算符比较两个字符串。也可以使用字符串函数strcmp。如果两个字符串相等,strcmp函数返回0。
```
char str1[] = "Hello";
char str2[] = "Hello";
if(strcmp(str1, str2) == 0){
cout << "The strings are equal";
} else {
cout << "The strings are not equal";
}
```
三、子字符串
可以使用字符串函数substr获取一个字符串的子字符串。
```
#include
using namespace std;
string str = "This is a string";
string sub = str.substr(5, 2); //得到is
```
四、字符串长度
可以使用字符串函数strlen获取字符串的长度。
```
char str[] = "This is a string";
int len = strlen(str); //得到字符串长度
```
常见的字符串函数
除了上述例子中的函数外,C++还提供了其他几个常见的字符串函数,包括strchr、strrev和strtok。
strchr函数用于从一个字符串中扫描给定字符的第一次出现。它返回指向该字符的指针。
```
char str[] = "This is a string";
char *p;
p = strchr(str, 'i'); //指向第一个i
```
strrev函数用于颠倒字符串中字符的顺序,变成一个新字符串。
```
char str[] = "This is a string";
char *p;
p = strrev(str); //输出gnirts a si sihT
```
strtok函数用于将字符串分成几个标记,每个标记之间使用指定的分隔符分隔。该函数返回指向下一个标记的指针
```
char str[] = "This,is,a,string";
char *p;
p = strtok(str, ","); //指向This
```