用c++定义一个字符串类
时间: 2023-05-29 13:07:23 浏览: 170
C++字符串完全指南—第二部分字符串的封装类
C语言中没有字符串类的概念,但可以通过定义一个字符数组来实现字符串操作。以下是一个简单的字符串类定义:
```c
// 定义一个字符串类
typedef struct {
char* str; // 字符串的存储空间
int length; // 字符串的长度
} String;
// 初始化一个字符串对象
void initString(String* s, const char* str) {
s->length = strlen(str);
s->str = (char*)malloc((s->length + 1) * sizeof(char));
strcpy(s->str, str);
}
// 获取字符串的长度
int getStringLength(String* s) {
return s->length;
}
// 获取字符串的值
char* getStringValue(String* s) {
return s->str;
}
// 拼接字符串
void concatString(String* s1, String* s2) {
int newLength = s1->length + s2->length;
char* newStr = (char*)malloc((newLength + 1) * sizeof(char));
strcpy(newStr, s1->str);
strcat(newStr, s2->str);
free(s1->str);
s1->str = newStr;
s1->length = newLength;
}
// 释放字符串的存储空间
void freeString(String* s) {
free(s->str);
s->length = 0;
s->str = NULL;
}
```
使用示例:
```c
int main() {
String s1, s2;
initString(&s1, "hello");
initString(&s2, "world");
printf("s1: %s\n", getStringValue(&s1));
printf("s2: %s\n", getStringValue(&s2));
concatString(&s1, &s2);
printf("s1 after concat: %s\n", getStringValue(&s1));
printf("s1 length: %d\n", getStringLength(&s1));
freeString(&s1);
freeString(&s2);
return 0;
}
```
阅读全文