#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; //函数原型 char* deleteString(char* s1, const char* s2); int main() { char ls[100] = "abcxxdexxf"; const char* ss = "xx"; deleteString(ls, ss); cout << ls << endl; return 0; } //在下面实现函数deleteString
时间: 2024-03-11 21:47:46 浏览: 76
好的,以下是使用 C++ 实现 `deleteString` 函数的示例代码:
```c++
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;
//函数原型
char* deleteString(char* s1, const char* s2);
int main() {
char ls[100] = "abcxxdexxf";
const char* ss = "xx";
deleteString(ls, ss);
cout << ls << endl; // 输出 "abcdef"
return 0;
}
//实现函数deleteString
char* deleteString(char* s1, const char* s2) {
int len1 = strlen(s1); // 获取字符串 s1 的长度
int len2 = strlen(s2); // 获取字符串 s2 的长度
int i, j, k;
for (i = 0; i <= len1 - len2; ) {
for (j = i, k = 0; k < len2 && s1[j] == s2[k]; j++, k++);
if (k == len2) {
for (j = i; j < i + len2; j++) {
s1[j] = ' '; // 将匹配的子字符串替换为空格
}
i += len2; // 跳过已删除的子字符串
} else {
i++; // 继续查找下一个子字符串
}
}
// 删除空格
for (i = j = 0; i < len1; i++) {
if (s1[i] != ' ') {
s1[j++] = s1[i];
}
}
s1[j] = '\0'; // 添加字符串结束符
return s1;
}
```
在这个函数中,我们使用了 C++ 标准库中的 `strlen()` 函数,可以帮助我们获取字符串的长度。我们使用两个 `for` 循环来查找并删除指定的子字符串。如果找到了匹配的子字符串,我们就将它替换为空格,并跳过已删除的子字符串;否则,我们就继续查找下一个子字符串。最后,我们再次遍历字符串,将所有的空格删除,得到最终的结果字符串。
你可以在 `main()` 函数中调用 `deleteString(s1, s2)`,其中 `s1` 为原始字符串,`s2` 为要删除的子字符串。函数将直接修改 `s1`,并返回指向 `s1` 的指针。
注意:这段代码只能删除完整的子字符串,如果子字符串只是部分匹配,那么它将不会被删除。此外,我们将匹配的子字符串替换为空格,这可能会改变原始字符串的长度,因此我们需要在删除空格后,将字符串结束符添加到新字符串的末尾。
阅读全文