C++基础-string截取、替换、查找子串函数

1. 截取子串

       s.substr(pos, n)    截取s中从pos开始(包括0)的n个字符的子串,并返回

       s.substr(pos)        截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回

 

2. 替换子串

       s.replace(pos, n, s1)    用s1替换s中从pos开始(包括0)的n个字符的子串

 

3. 查找子串

       s.find(s1)         查找s中第一次出现s1的位置,并返回(包括0)

       s.rfind(s1)        查找s中最后次出现s1的位置,并返回(包括0)

       s.find_first_of(s1)       查找在s1中任意一个字符在s中第一次出现的位置,并返回(包括0)

       s.find_last_of(s1)       查找在s1中任意一个字符在s中最后一次出现的位置,并返回(包括0)

       s.fin_first_not_of(s1)         查找s中第一个不属于s1中的字符的位置,并返回(包括0)

       s.fin_last_not_of(s1)         查找s中最后一个不属于s1中的字符的位置,并返回(包括0)

### C++ 中 `std::string` 类型查找子串的方法 在 C++ 的标准库中,`std::string` 提供了多种用于查找子串函数。其中最常用的两个函数分别是 `find()` 和 `find_first_of()`。以下是这些函数的具体说明以及如何使用它们。 #### 使用 `find()` 函数 `find()` 是用来查找整个子串第一次出现的位置。如果找到了目标子串,则返回其起始位置;如果没有找到,则返回特殊值 `std::string::npos` 表示未找到[^1]。 下面是一个简单的例子展示如何使用 `find()`: ```cpp #include <iostream> #include <string> int main() { std::string str1 = "ahedhello111"; std::string subStr = "hello"; size_t foundPos = str1.find(subStr); if (foundPos != std::string::npos) { std::cout << "Substring '" << subStr << "' found at position: " << foundPos << std::endl; } else { std::cout << "Substring not found." << std::endl; } return 0; } ``` 此程序会输出 `"Substring 'hello' found at position: 4"`,因为子串 `"hello"` 开始于索引位置 4 处。 #### 结合 `substr()` 截取子串 当通过 `find()` 找到了某个子串之后,还可以利用 `substr()` 来进一步处理这个部分的数据。例如提取从指定位置开始的一段字符串[^4]。 继续上面的例子扩展功能如下所示: ```cpp if (foundPos != std::string::npos) { std::string extractedSubstr = str1.substr(foundPos, subStr.length()); std::cout << "Extracted substring is: " << extractedSubstr << std::endl; } else { std::cout << "Cannot extract as the substring was not found!" << std::endl; } ``` 这里调用了 `substr(size_t pos, size_t len)` 方法来获取匹配上的那部分内容,并打印出来。 #### 其他相关查找方法简介 除了上述提到过的 `find()` 及其实例之外还有其他几个重要的成员函数可用于不同的场景需求: - **`find_first_of(const basic_string& str)`**: 返回第一个存在于参数列表中的任何一个字符所在的位置。 - **`find_last_of(const basic_string& str)`**: 定位最后一个属于集合内的任何单个字符之处[^2]。 以上就是有关于 C++ 中针对 string 数据类型的几种常见操作方式介绍及其实际应用案例分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值