c++实现一个string类,要求:1、不能使用系统默认构造、析构、拷贝构造、赋值操作等;2、实现常用操作接口,如拼接、分隔、字符查找、替换等
时间: 2023-02-08 07:34:01 浏览: 118
c++设计实现一个"字符串类",要求系统设计具有一定弹性和可扩展性,使得后续维护和扩展功能更容易,增加或修改系统功能变得更简单。
5星 · 资源好评率100%
C语言实现自定义的string类,不能使用系统默认的构造、析构、拷贝构造、赋值操作等。可以定义结构体,来模拟实现string类的功能。具体实现可以参考下面的代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char *str; //存储字符串
int len; //字符串长度
}String;
//初始化字符串
void init_string(String *s, char *str) {
int len = strlen(str);
s->str = (char *)malloc(sizeof(char) * (len + 1));
strcpy(s->str, str);
s->len = len;
}
//拼接字符串
void join_string(String *s, char *str) {
int len = strlen(str);
s->str = (char *)realloc(s->str, sizeof(char) * (s->len + len + 1));
strcat(s->str, str);
s->len += len;
}
//查找字符
int find_char(String *s, char c) {
char *p = strchr(s->str, c);
if (p == NULL)
return -1;
else
return p - s->str;
}
//替换字符
void replace_char(String *s, char oldc, char newc) {
int i;
for (i = 0; i < s->len; i++) {
if (s->str[i] == oldc) {
s->str[i] = newc;
}
}
}
//释放内存
void clear_string(String *s) {
free(s->str);
s->str = NULL;
s->len = 0;
}
int main() {
String s;
init_string(&s, "hello");
join_string(&s, " world");
printf("%s\n", s.str);
int pos = find_char(&s, 'o');
printf("%d\n", pos);
replace_char(&s, 'o', 'O');
printf("%s\n", s.str);
clear_string(&s);
return 0;
}
```
这是一个例子,实现了一些常
阅读全文