std string replace方法
`std::string::replace` 是 C++ 标准库中 `std::string` 类的一个方法,用于替换字符串中指定位置的字符或子字符串。这个方法的使用非常简单,只需要指定所替换的起始位置、替换的长度和替换的内容即可。
## 方法签名
```cpp
string& replace(size_t pos, size_t len, const string& str);
string& replace(size_t pos, size_t len, const char* s);
string& replace(size_t pos, size_t len, const char* s, size_t n);
string& replcae(size_t pos, size_t len, size_t n, char c);
```
上述方法中,第一个参数 pos 是替换操作的起始位置(从 0 开始计算),第二个参数 len 是待替换的子串长度(如果超出字符串长度,则默认替换到字符串末尾),第三个参数表示替换的内容,可以是一个字符串,也可以是一个字符或者一个指定长度的字符数组。
c++中string的用法 第一个 `replace` 方法返回的是一个对当前字符串对象的引用,这意味着多个 `replace` 方法可以进行链式调用。
## 示例
### 示例一:替换字符
我们看一下如何使用 `std::string::replace` 方法来替换字符串中某个位置上的单个字符。比如说,假设我们有一个字符串 `s = "This is a example string."`,我们想要将其中的第一个字符替换为大写字母 T。这时我们可以使用下面的代码完成替换:
```cpp
std::string s = "This is a example string.";
s.replace(0, 1, "T");
```
注意,这里的第一个参数是 `0`,表示从字符串的起始位置开始进行替换;第二个参数是 `1`,表示我们只需要替换一个字符。此时 s 的值变为 "Tis is a example string."。
```cpp
std::string s = "This is a example string.";
s.replace(4, 1, 1, '_'); // 替换第一个空格为下划线
s.replace(10, 7, "great"); // 替换单词 "example" 为 "great"
s.replace(15, 1, 1, '_'); // 替换第二个空格为下划线
```
注意,在这个例子中,前两个 `replace` 方法分别将第一个空格和单词 "example" 进行替
换,而第三个 `replace` 方法将第二个空格进行替换。此时 s 的值变为 "This_is_a_great_string."。
有时候我们想要替换的子串可能会超出原始字符串的长度,这时可以直接传入多余的字符,如下所示:
在这个例子中,开始的值为 "string",我们将从第 2 个位置开始(即 "r" 的位置)连续替换 4 个字符,但是替换的字串长度("brother")为 7,大于了原始字符串的剩余长度(只剩下三个字符)。此时 s 的值变为 "stbrother"。可以看到,只有 "rtin" 这一部分被成功替换了。
### 示例五:链式调用
在这个例子中,我们使用 `find` 方法出 "example" 单词的起始位置,然后使用 `replace` 方法将其替换为 "great"。接下来我们使用另一个 `replace` 方法将字符串中所有的小写字母 "i" 替换为大写字母 "I",该操作完成后,链式调用下一个 `replace` 方法将第一个空格替换为下划线 "_"; 最后链式调用上一个 `replace` 方法再将第二个空格也替换为下划线 "_"。最终 s 的值变为 "This_is_a_greIt_strIng."。
## 总结除了上面介绍的示例,`std::string::replace` 方法还可以用于删除字符串中的字符或子串,只需要将要替换的长度 len 设置为 0,如下代码所示:
在上面的示例中,我们发现可以使用 lambda 表达式来进行替换。这是因为 C++11 标准中提供了一种新的字符串替换方法,即可以使用 lambda 表达式对字符进行处理。在下面的代码示例中,我们将小写字母替换为大写字母,使用了 lambda 表达式:
```cpp
std::string s = "Hello World!";
s.replace(s.begin(), s.end(), [](char c) { return (c >= 'a' && c <= 'z') ? (c - 32) : c; });
```
在上面的示例中,我们使用了 `replace` 方法来进行大小写字母的替换操作。第一个参数为 `s.begin()`,表示从字符串的开头开始替换;第二个参数是 `s.end()`,表示替换到字符串的末尾为止;第三个参数是一个 lambda 表达式,用于对字符串中的每个字符进行处理。
在 lambda 表达式中,我们首先判断字符是否为小写字母,如果是,则将其转换为大写字母。将处理后的字符作为 `replace` 方法的返回值。这样,我们就得到了一个所有小写字母均被替换为大写字母的新字符串。
`std::string::replace` 方法是 `std::string` 类的一个非常有用的方法,它可以用于在字符串中进行字符和子串的替换、添加和删除操作。根据不同的需求和参数组合,我们可以轻松地实现各种字符串操作,从而更好地满足应用程序的需求。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论