#include<iostream> #include<string> using namespace std; void replace_str(string &A, string B, string C) { string temp, temp1; int index_B_A = A.find(B); while (index_B_A != -1) { A.erase(index_B_A, 1); A.insert(index_B_A, C); A.erase(index_B_A, 1); index_B_A = A.find(B, index_B_A); } } //字符串插入和删除 void main() { string A = "把你的心 我的心 串一串"; string B = "心"; string C = "鸡翅"; replace_str(A, B, C); cout << A <<endl; system("pause"); }
时间: 2024-04-11 08:26:58 浏览: 86
你的代码实现了替换字符串的功能,使用了循环和字符串操作来逐个替换子串A为子串B。这是另一种有效的方法。
不过需要注意的是,你的代码中的 `main` 函数应该返回 `int` 类型而不是 `void`,并且应该按照 C++ 标准写法使用 `int main()`。
此外,你在删除子串A后又删除了一个字符,可能导致最终结果出现多余的字符。可以将删除操作修改为删除子串A的长度,然后再插入子串B。
以下是修改后的代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
void replace_str(string& A, string B, string C)
{
size_t index = A.find(B);
while (index != string::npos)
{
A.erase(index, B.length());
A.insert(index, C);
index = A.find(B, index + C.length());
}
}
int main()
{
string A = "把你的心 我的心 串一串";
string B = "心";
string C = "鸡翅";
replace_str(A, B, C);
cout << A << endl;
system("pause");
return 0;
}
```
此代码中,`string::find` 函数用于查找子串B在字符串A中的位置,如果找到则执行替换操作,并更新查找位置。循环直到找不到子串B为止。
希望这可以帮助到你!如果还有其他问题,请随时提问。
阅读全文