我怀疑您输入数据的方式有问题,您可以试着输出一下。
另外,您可能理解错了 `replace` 的用法,建议[重新学习](https://zh.cppreference.com/w/cpp/string/basic_string/replace)。
by _caiji_ @ 2021-07-22 10:17:56
@[caijianhong](/user/390033)
感谢,我读入雀氏有问题,不过为啥replace有问题,我不理解
by Ztemily @ 2021-07-22 10:26:30
@[Ztemily](/user/352961)
```cpp
string sss=s.replace(s.find(aa[i]),aa[i].length(),bb[i]);
```
对 `s` 使用 `replace` 方法,返回替换后的字符串的同时,还把 `s` 串修改了。具体一点,您可以试着运行这段代码:
```cpp
#include <string>
#include <iostream>
using namespace std;
string a="Luogu,txdy",b;
string from="txdy",to="yyds";
int main(){
cout<<a<<endl;
b=a.replace(a.find(from),from.size(),to);
cout<<a<<" "<<b<<endl;
return 0;
}
```
by _caiji_ @ 2021-07-22 10:32:44
它的结果并非是期待的
```cpp
Luogu,txdy
Luogu,txdy Luogu,yyds
```
而是
```cpp
Luogu,txdy
Luogu,yyds Luogu,yyds
```
说明 `a` 已经被修改了。
by _caiji_ @ 2021-07-22 10:33:48
@[caijianhong](/user/390033)
懂了,感谢大佬,不过为啥我运行时还有那串奇怪的东西
by Ztemily @ 2021-07-22 10:34:36
@[Ztemily](/user/352961) 因为 `replace` 时原串被修改,导致出现一些奇奇怪怪的问题。
![](https://cdn.luogu.com.cn/upload/image_hosting/4u0hhjml.png)
这个错误的意思是:`replace` 时出现了越界。
by _caiji_ @ 2021-07-22 10:36:16
@[caijianhong](/user/390033)
感谢,Bug找出来了,if判断条件有问题,替换函数也改正了(丢人
by Ztemily @ 2021-07-22 10:42:12