(用C++语言)(要求多组输入)从键盘输入的两个字符串(字符串中可能包含空格),判断第二个字符串是否在第 一个字符串中出现。如果出现(可能会出现多次),则从第一个字符串中删除第二 个字符串的内容,最后输出修改后的第一个字符串;如果没有出现,则直接输出第 一个字符串。可以使用 string 类的成员函数完成。 输入描述: 输入两个字符串,每个字符串以回车符为结束符。
时间: 2023-06-20 17:07:21 浏览: 110
以下是一种可能的 C++ 代码实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
string s1, s2;
getline(cin, s1); // 读入第一个字符串,包含空格
getline(cin, s2); // 读入第二个字符串,包含空格
int pos = 0;
while ((pos = s1.find(s2, pos)) != string::npos) { // 在 s1 中查找 s2
s1.erase(pos, s2.length()); // 删除 s1 中出现的 s2
}
cout << s1 << endl; // 输出修改后的 s1
return 0;
}
```
该程序中,`getline(cin, s1)` 和 `getline(cin, s2)` 分别用于读入两个字符串,其中 `cin` 表示标准输入流,`s1` 和 `s2` 分别是两个 `string` 类型的变量。`getline` 函数会读取一行输入,包括空格,直到遇到回车符为止,并将结果存储到相应的字符串变量中。
接下来,使用 `s1.find(s2, pos)` 在字符串 `s1` 中查找字符串 `s2`,并将结果存储到 `pos` 变量中。如果 `s2` 存在于 `s1` 中,则 `find` 函数返回 `s2` 在 `s1` 中第一次出现的位置;否则返回 `string::npos`,表示未找到。
在 `while` 循环中,不断查找 `s2` 在 `s1` 中的出现位置,并使用 `s1.erase(pos, s2.length())` 删除 `s1` 中的 `s2`。`erase` 函数用于从字符串中删除指定位置的字符或子串,第一个参数为删除位置的起始位置,第二个参数为要删除的字符或子串的长度。
最后,使用 `cout` 输出修改后的 `s1`,并在结尾加上换行符 `endl`。
阅读全文