求助

P1032 [NOIP2002 提高组] 字串变换

我怀疑您输入数据的方式有问题,您可以试着输出一下。 另外,您可能理解错了 `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


|