问题描述:
你想要编写一个程序,在一个字符串中找出另一个字符串出现的全部位置,并输出这些位置。
问题原因:
你的代码存在一些问题。首先,你在输入字符串时使用了空格来进行边界标记,这可能导致错误的结果。其次,你在每次找到匹配位置后,将
pos 更新为
pos + s2.size() - 1,这会导致部分位置被跳过。
解决方法:
下面是修正后的代码:
- #include <iostream>
- #include <string>
- using namespace std;
- int main() {
- string s1, s2;
- cin >> s1 >> s2;
-
- size_t pos = -1;
- while ((pos = s1.find(s2, pos + 1)) != string::npos) {
- cout << pos << endl;
- }
-
- return 0;
- }
复制代码
修正后的代码使用
find 函数在字符串
s1 中查找字符串
s2 的每个出现位置。
find 函数的第二个参数表示开始查找的索引,通过将其设置为
pos + 1,可以避免重复匹配的问题。同时,不再使用空格进行边界标记。
希望这个解答对你有帮助!如果还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!

