试定义一个字符串类CStr,该类封装一个字符串并可以删除字符串内任何位置的字符,要求如下,私有数据成员chars公有成员函数CStr(chars)构造函数,为s分配存储空间并利用参数s初始化对象voidDelChar (int n)删除字符串的第n个字符
时间: 2024-03-06 09:46:24 浏览: 52
好的,我理解了你的问题。下面是CStr类的定义:
```cpp
class CStr {
private:
char* s;
public:
CStr(char* s); // 构造函数
void DelChar(int n); // 删除字符串的第n个字符
};
```
在上面的定义中,我们定义了一个名为CStr的字符串类,它有一个私有成员变量 `s`,它是一个指向字符数组的指针。
公共成员函数有一个构造函数和一个名为 `DelChar` 的函数。构造函数用于初始化字符串,而 `DelChar` 函数用于删除字符串中的一个字符。下面是这些函数的实现:
```cpp
// 构造函数
CStr::CStr(char* s) {
this->s = new char[strlen(s) + 1]; // 为s分配存储空间
strcpy(this->s, s); // 利用参数s初始化对象
}
// 删除字符串的第n个字符
void CStr::DelChar(int n) {
if (strlen(s) < n) {
return;
}
for (int i = n - 1; i < strlen(s) - 1; i++) {
s[i] = s[i + 1];
}
s[strlen(s) - 1] = '\0';
}
```
在上面的实现中,我们首先在构造函数中为字符串 `s` 分配存储空间,然后将参数 `s` 复制到这个新分配的存储空间中。在 `DelChar` 函数中,我们从删除位置开始遍历字符串,并将每个字符向前移动一个位置。最后,我们将字符串的最后一个字符设置为 `\0`,以确保字符串的正确终止。
希望这个回答能够帮到你!
阅读全文