编写函数void delChar(char);删除字符串中由参数指定的字符,若出现多处,均需删除
时间: 2024-02-22 19:57:40 浏览: 67
下面是一个简单的字符串类示例,其中包含了 `delChar` 方法,用于删除指定字符:
```c++
#include <iostream>
#include <cstring>
class String {
public:
String(const char* str = "") {
if (str) {
m_data = new char[strlen(str) + 1];
strcpy(m_data, str);
}
else {
m_data = new char[1];
*m_data = '\0';
}
}
String(const String& other) {
m_data = new char[strlen(other.m_data) + 1];
strcpy(m_data, other.m_data);
}
~String() {
delete[] m_data;
}
String& operator=(const String& other) {
if (this != &other) {
char* new_data = new char[strlen(other.m_data) + 1];
strcpy(new_data, other.m_data);
delete[] m_data;
m_data = new_data;
}
return *this;
}
void delChar(char c) {
int len = strlen(m_data);
int i = 0, j = 0;
while (i < len) {
if (m_data[i] != c) {
m_data[j++] = m_data[i];
}
i++;
}
m_data[j] = '\0';
}
friend std::ostream& operator<<(std::ostream& os, const String& str) {
os << str.m_data;
return os;
}
private:
char* m_data;
};
int main() {
String str("Hello, World!");
std::cout << "Before: " << str << std::endl;
str.delChar('o');
std::cout << "After: " << str << std::endl;
return 0;
}
```
在上面的代码中,我们使用了一个 char* 类型的指针 m_data 来存储字符串,同时实现了 `delChar` 方法来删除指定字符。在 `delChar` 方法中,我们使用两个指针 i 和 j 分别扫描原始字符串和新字符串,如果原始字符串中的字符不是指定字符,就将其复制到新字符串中。最后,我们将新字符串末尾置为 '\0',以便正确输出结果。
你可以在主函数中调用 `delChar` 方法,传入需要删除的字符作为参数,然后输出得到的新字符串。
阅读全文