(C++)(要求使用简单详细的代码)从键盘输入的两个字符串(字符串中可能包含空格),判断第二个字符串是否在第 一个字符串中出现。如果出现(可能会出现多次),则从第一个字符串中删除第二 个字符串的内容,最后输出修改后的第一个字符串;如果没有出现,则直接输出第 一个字符串。可以使用 string 类的成员函数完成。
时间: 2023-12-03 08:43:49 浏览: 31
可以使用 string 类的 find() 函数来查找第二个字符串在第一个字符串中的位置,并使用 erase() 函数来删除该子字符串。如果 find() 函数返回 npos,则代表第二个字符串没有出现在第一个字符串中。
以下是代码示例:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
string str1, str2;
getline(cin, str1); // 从键盘输入第一个字符串,包含空格
getline(cin, str2); // 从键盘输入第二个字符串,包含空格
size_t pos = str1.find(str2); // 查找第二个字符串在第一个字符串中的位置
while (pos != string::npos) { // 若找到,则删除该子字符串
str1.erase(pos, str2.length());
pos = str1.find(str2);
}
cout << str1 << endl; // 输出修改后的第一个字符串
return 0;
}
```
注意:使用 getline() 函数可以读取包含空格的字符串。pos 的类型为 size_t,可以用 string::npos 来表示未找到子字符串的情况。
相关问题
c++使用指针连接键盘输入的两个字符串,输入的字符串中可能含有空格
可以使用指针和动态内存分配来连接键盘输入的两个字符串,下面是一个示例程序:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
const int MAX_LEN = 100;
char* str1 = new char[MAX_LEN]; // 动态分配内存
char* str2 = new char[MAX_LEN];
cout << "请输入第一个字符串:" << endl;
cin.getline(str1, MAX_LEN); // getline函数可以读取包含空格的字符串
cout << "请输入第二个字符串:" << endl;
cin.getline(str2, MAX_LEN);
int len1 = strlen(str1);
int len2 = strlen(str2);
char* str3 = new char[len1 + len2 + 1]; // 动态分配内存
strcpy(str3, str1); // 将第一个字符串拷贝到str3中
strcat(str3, str2); // 将第二个字符串拼接到str3的末尾
cout << "拼接后的字符串为:" << endl;
cout << str3 << endl;
delete[] str1; // 释放内存
delete[] str2;
delete[] str3;
return 0;
}
```
上述程序中,使用了 `getline` 函数读取包含空格的字符串,使用了 `strcpy` 函数将第一个字符串拷贝到 `str3` 中,使用了 `strcat` 函数将第二个字符串拼接到 `str3` 的末尾,最后释放了动态分配的内存。
c++输入两个字符串,使用指针将两字符串连接,输入字符串中可能含有空格
可以使用指针将两个字符串连接起来,具体实现如下:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char str1[100], str2[100];
char *p1, *p2;
cout << "请输入第一个字符串:";
cin.getline(str1, 100); // 可以输入含有空格的字符串
cout << "请输入第二个字符串:";
cin.getline(str2, 100);
p1 = str1 + strlen(str1); // p1 指向 str1 的末尾
p2 = str2;
while (*p2 != '\0') {
*p1++ = *p2++; // 将 str2 的内容复制到 str1 的末尾
}
*p1 = '\0'; // 加上字符串结束符
cout << "连接后的字符串为:" << str1 << endl;
return 0;
}
```
上述代码中,先定义了两个字符数组 `str1` 和 `str2`,然后定义两个指针 `p1` 和 `p2`,分别指向两个字符串的首地址。接着使用 `strlen` 函数获取 `str1` 的长度,将 `p1` 指向 `str1` 的末尾。然后使用 `while` 循环,将 `str2` 中的内容复制到 `str1` 的末尾。最后加上字符串结束符,输出连接后的字符串。