📅  最后修改于: 2023-12-03 15:29:52.812000             🧑  作者: Mango
在 C++ 中,我们可以使用 find()
函数查找子字符串,并使用 replace()
函数替换子字符串。这两个函数都是定义在 <string>
头文件中的。
使用 find()
函数查找子字符串的语法如下:
size_t find (const string& str, size_t pos = 0) const noexcept;
其中,第一个参数是要查找的子字符串,第二个参数是查找的起始位置。如果找到了,返回子字符串在原字符串中的位置;如果没有找到,返回 string::npos
。
下面是一个查找子字符串的示例代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "hello world";
string sub_str = "world";
size_t pos = str.find(sub_str);
if (pos != string::npos) {
cout << "Found at position " << pos << endl;
} else {
cout << "Not found" << endl;
}
return 0;
}
输出结果:
Found at position 6
使用 replace()
函数替换子字符串的语法如下:
basic_string& replace (size_t pos, size_t len, const basic_string& str);
其中,第一个参数是要替换的子字符串的起始位置,第二个参数是要替换的子字符串的长度,第三个参数是要替换成的新字符串。
下面是一个替换子字符串的示例代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "hello world";
string old_sub_str = "world";
string new_sub_str = "you";
size_t pos = str.find(old_sub_str);
if (pos != string::npos) {
str.replace(pos, old_sub_str.length(), new_sub_str);
cout << str << endl;
} else {
cout << "Not found" << endl;
}
return 0;
}
输出结果:
hello you
如果要多次替换子字符串,可以使用 while()
循环来实现。每次循环中,使用 find()
函数查找子字符串的位置,并使用 replace()
函数替换子字符串。
下面是一个多次替换子字符串的示例代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "hello world";
string old_sub_str = "o";
string new_sub_str = "x";
size_t pos = str.find(old_sub_str);
while (pos != string::npos) {
str.replace(pos, old_sub_str.length(), new_sub_str);
pos = str.find(old_sub_str, pos + 1);
}
cout << str << endl;
return 0;
}
输出结果:
hellx wxrld
在 C++ 中查找和替换子字符串很容易,只需要使用 find()
和 replace()
函数即可。如果要多次替换子字符串,可以使用 while()
循环来实现。