头图

C++ 中 string 类的基础使用方法

在 C++ 中,string 类是 STL(标准模板库)的一部分,它提供了一种方便而高效的方式来操作字符串。与 C 风格字符串不同,C++ 的 string 类封装了动态内存管理,使得字符串操作更加简洁和安全。本文将深入探讨 string 类的使用方法,涵盖从定义、初始化到常见操作。


1. 引入 string

在使用 C++ 的 string 类时,首先需要包含头文件 <string>。这个头文件提供了 std::string 类的定义。

#include <string>

2. 定义与初始化 string

C++ 的 string 类提供了多种定义和初始化字符串的方式。以下是一些常见的方式:

  • 默认构造函数:创建一个空字符串。

    std::string str1; // 创建一个空字符串
  • 字符串字面量初始化:通过直接赋值或使用构造函数,将字符串字面量初始化为 string

    std::string str2 = "Hello, world!"; // 使用字符串字面量初始化
  • 复制构造函数:通过另一个 string 对象初始化新的 string

    std::string str3(str2); // 使用另一个string初始化

3. 访问与操作字符串

string 类提供了许多方法来访问和操作字符串,以下是一些常见操作:

3.1 获取字符串长度

使用 length()size() 方法获取字符串的长度。两个方法功能相同。

std::string str = "Hello";
std::cout << str.length() << std::endl; // 输出 5
std::cout << str.size() << std::endl;   // 输出 5
3.2 访问字符

使用下标操作符 [] 来访问字符串中的字符。

char ch = str[0];  // 获取第一个字符 'H'

注意:使用下标访问字符时,如果索引超出字符串的长度,可能会导致未定义行为。

3.3 修改字符

可以使用下标操作符直接修改字符串中的字符。

str[0] = 'h'; // 修改第一个字符为 'h'
3.4 连接字符串

C++ 的 string 类支持使用 + 运算符或 += 操作符进行字符串连接。

std::string str1 = "Hello, ";
std::string str2 = "world!";
str1 = str1 + str2; // 使用 + 运算符连接
str1 += str2;       // 使用 += 操作符连接
3.5 插入字符串

使用 insert() 方法在指定位置插入字符串。

str.insert(7, "C++ "); // 在索引 7 处插入 "C++ "
3.6 删除部分字符串

使用 erase() 方法删除字符串的一部分,指定起始位置和删除的字符数。

str.erase(7, 5); // 删除从位置 7 开始的 5 个字符 "C++ "

4. 查找与替换

string 类还提供了查找和替换的方法。

4.1 查找子串

使用 find() 方法查找子串的第一次出现位置。如果没有找到,返回 std::string::npos

size_t pos = str.find("world"); // 查找 "world" 的位置
if (pos != std::string::npos) {
    std::cout << "Found at position: " << pos << std::endl;
}
4.2 替换子串

使用 replace() 方法替换子串。

str.replace(pos, 5, "Universe"); // 从位置 pos 开始替换 5 个字符为 "Universe"

5. 字符串比较

C++ string 类支持直接使用 ==!=<> 等运算符进行字符串比较。

std::string str1 = "hello";
std::string str2 = "world";

if (str1 == str2) {
    std::cout << "Strings are equal." << std::endl;
} else {
    std::cout << "Strings are not equal." << std::endl;
}

6. 转换操作

string 类还提供了一些常用的转换方法,主要包括将 string 转换为 C 风格字符串和将字符串转换为数字。

6.1 转 C 风格字符串

使用 c_str() 方法将 string 转换为 C 风格字符串(const char*)。

const char* cstr = str.c_str(); // 将string转换为 C 风格字符串
6.2 字符串转换为数值

C++11 引入了 stoi()stof() 等函数来将字符串转换为数值类型。

std::string num_str = "123";
int num = std::stoi(num_str);   // 将字符串转换为整数

7. 常用的其他方法

除了上述常见操作外,string 类还提供了很多实用的方法,如:

  • substr():获取子串。
  • append():在字符串末尾追加内容。
  • empty():检查字符串是否为空。
std::string str = "Hello";
std::string sub_str = str.substr(0, 3); // 获取子串 "Hel"
str.append(" World!"); // 追加 " World!"
bool isEmpty = str.empty(); // 判断字符串是否为空

总结

C++ 的 string 类为处理字符串提供了丰富的功能。它封装了字符串的动态内存管理,使得字符串操作变得更加简洁、灵活和安全。通过上述操作,开发人员可以轻松完成字符串的定义、修改、查找、替换等常见任务。string 类是 C++ 中非常基础且重要的组件,掌握它对于编写高效、可靠的代码至关重要。

分析说明表

操作方法/函数说明
字符串定义std::string str1;默认构造函数,创建空字符串
字符串初始化std::string str2 = "Hello";使用字符串字面量初始化
字符串长度str.length()str.size()获取字符串的长度
字符访问str[0]使用下标操作符访问字符串中的字符
字符修改str[0] = 'h';使用下标操作符修改字符串中的字符
字符串连接str1 + str2str1 += str2使用运算符连接两个字符串
字符串插入str.insert(7, "C++ ");在指定位置插入字符串
字符串删除str.erase(7, 5);删除指定位置及长度的子串
查找子串str.find("world");查找子串在字符串中的位置
替换子串str.replace(pos, 5, "Universe");替换指定位置的子串
字符串转换为数值std::stoi("123");将字符串转换为整数
转 C 风格字符串str.c_str();string 转换为 C 风格字符串

通过掌握这些基础方法,开发者可以高效地处理 C++ 中的字符串操作,提升代码质量和可维护性。


蓝易云
28 声望3 粉丝