📜  字符串 - C++ (1)

📅  最后修改于: 2023-12-03 15:09:21.172000             🧑  作者: Mango

字符串 - C++

介绍

在计算机科学中,字符串是一种数据类型,通常用来表示文本序列。C++ 也支持字符串操作,以便在程序中处理文本数据。

在 C++ 中,字符串可以用字符数组或标准库提供的 string 类型来表示。字符数组是 C++ 中用来存储字符串的最基本的数据结构,是一段连续的内存空间,其中每个元素都是字符类型。而 string 类型则提供了更加方便的字符串处理方法,如字符串的拼接、查找、截取等操作。

字符串的表示
字符数组

字符数组可以通过以下方式来声明和初始化:

char str[] = "Hello World!";  // 声明并初始化一个字符数组

或者

char str[20];  // 声明一个字符数组
strcpy(str, "Hello World!");   // 使用 strcpy() 函数将字符串拷贝到字符数组中

在字符数组中,每个字符都存储在一个单独的内存位置,字符串以 '\0' 结尾,表示字符串的结束。因此,要确保字符数组的大小足够大,能够存储字符串及其结束符。

std::string 类型

字符串的另一种表示方式是使用 std::string 类型。标准库提供的 string 类型封装了字符串的操作,提供了方便的函数供使用。

std::string 可以通过以下方式来声明和初始化:

std::string str = "Hello World!";  // 声明并初始化一个 std::string 变量

或者

std::string str;  // 声明一个 std::string 变量
str = "Hello World!";  // 使用赋值运算符将字符串赋值给 std::string 变量

在 std::string 中,字符串的结束由类自动管理,因此不需要像字符数组一样手动添加结束符。

字符串的操作
字符串的长度

我们可以使用 C++ 标准库提供的函数来获取字符串的长度。对于字符数组,使用 strlen() 函数:

char str[] = "Hello World!";
int len = strlen(str);  // 获取字符串的长度

对于 std::string 类型,使用 length() 或 size() 函数:

std::string str = "Hello World!";
int len = str.length();   // 获取字符串的长度
字符串的拼接

要将两个字符串拼接起来,可以使用 strcat() 函数:

char str1[20] = "Hello";
char str2[20] = "World!";
char str3[40];

strcpy(str3, str1);     // 将 str1 复制到 str3
strcat(str3, str2);     // 将 str2 拼接到 str3 后面

std::cout << str3 << std::endl;   // 输出结果:HelloWorld!

对于 std::string 类型,可以使用加号(+)运算符或 append() 函数来拼接字符串:

std::string str1 = "Hello";
std::string str2 = "World!";
std::string str3;

str3 = str1 + str2;      // 使用加号运算符拼接字符串
str3.append(" from C++"); // 使用 append() 函数拼接字符串

std::cout << str3 << std::endl;   // 输出结果:HelloWorld! from C++
字符串的查找

要在字符串中查找子字符串或字符,可以使用 strstr() 函数或 find() 函数。对于字符数组,使用 strstr() 函数:

char str[] = "Hello World!";
char sub[] = "World!";

if (strstr(str, sub) != nullptr) {
    std::cout << "Found it!" << std::endl;
}

对于 std::string 类型,使用 find() 函数:

std::string str = "Hello World!";
std::string sub = "World!";

if (str.find(sub) != std::string::npos) {
    std::cout << "Found it!" << std::endl;
}
字符串的截取

要截取字符串的一部分,可以使用 substr() 函数。对于字符数组,需要自己维护子字符串的结束符。

char str[20] = "Hello World!";
char sub[10];

memcpy(sub, str + 6, 5);    // 从第 6 个字符开始截取 5 个字符
sub[5] = '\0';              // 添加结束符

std::cout << sub << std::endl;   // 输出结果:World

对于 std::string 类型,可以直接使用 substr() 函数:

std::string str = "Hello World!";
std::string sub = str.substr(6, 5);    // 从第 6 个字符开始截取 5 个字符

std::cout << sub << std::endl;   // 输出结果:World
总结

字符串是一种常见的数据类型,在 C++ 中可以用字符数组或 std::string 类型来表示。在使用字符串时,需要注意输入和输出的格式,以及字符串的长度和内存空间是否足够。我们可以使用内置函数或标准库中提供的函数来完成字符串的常见操作,如拼接、查找、截取等。