C++ 字符串学习笔记

C++ 中的字符串是一组字符的序列,通常用于存储和操作文本。在 C++ 中有多种方式来表示字符串,如字符数组、string 类和 char 指针等。

字符串的初始化

使用字符数组

使用字符数组来初始化一个字符串非常常见,以下是一个例子:

c++Copy Code
char str[] = "hello world";

该语句定义了一个名为 str 的字符数组,并将字符串 "hello world" 存储在其中。需要注意的是,在数组末尾会自动添加一个空字符 '\0' 作为字符串的结尾符。

使用 string 类

C++ 标准库中提供了 string 类,使用该类可以更方便地操作字符串。以下是一个例子:

c++Copy Code
#include <string> using namespace std; string str = "hello world";

该语句定义了一个名为 str 的 string 类对象,并将字符串 "hello world" 存储在其中。

使用 char 指针

使用 char 指针来初始化字符串也是一种常见的方式,以下是一个例子:

c++Copy Code
char *str = "hello world";

该语句定义了一个名为 str 的 char 指针,并将指向字符串 "hello world" 的首地址。

字符串的常用操作

字符串长度

计算字符串长度的函数是 strlen(),该函数会扫描字符串直到遇到空字符 '\0' 并返回字符串的长度(不包括空字符)。

c++Copy Code
char str[] = "hello world"; int len = strlen(str); // len 的值为 11

字符串复制

将一个字符串复制到另一个字符串中的函数是 strcpy(),该函数会将源字符串的内容复制到目标字符串中(包括空字符)。

c++Copy Code
char src[] = "hello world"; char dest[20]; strcpy(dest, src);

上述代码将字符串 "hello world" 复制到了名为 dest 的字符数组中。

字符串连接

将两个字符串连接起来的函数是 strcat(),该函数会将第二个字符串拼接到第一个字符串的末尾(不包括第二个字符串的开头空字符)。

c++Copy Code
char str1[20] = "hello "; char str2[] = "world"; strcat(str1, str2); // str1 的值为 "hello world"

字符串比较

比较两个字符串是否相同的函数是 strcmp(),该函数会比较两个字符串的每个字符进行逐一比较,如果全部相等则返回 0,否则返回非 0 值。

c++Copy Code
char str1[] = "hello"; char str2[] = "world"; int result = strcmp(str1, str2); // result 的值为负数,因为 'h' 的 ASCII 码小于 'w' 的

字符串查找

查找字符串中是否包含某个子串的函数是 strstr(),如果找到则返回该子串在原字符串中的首地址,否则返回 NULL。

c++Copy Code
char str[] = "hello world"; char *substr = "world"; char *result = strstr(str, substr); // result 的值为 "world"

以上是 C++ 中常用的字符串操作,还有很多其他的字符串函数可以使用。