dynamicString实现了C++不定长度的字符串,并且提供了一些函数来对其进行操作
dynamicString类型,包含了所有功能。
char* content = new char[1];
类型:private
char*
一个指向对象字符串的指针, 用来告诉函数要操作的目标字符串在内存中的什么位置。
安全起见,我们禁止外界更改content指针的值。所以将其定义为private
int length = 0;
类型:private
int
用于记录字符串长度。对内防止越界,对外返回长度。
为避免length被意外更改,我们也不允许外部访问它,所以将其定义为private。
*若想得到字符串长度,请使用成员中的getLength()函数。
int free = 0;
类型:private
int
int类型,用于记录剩余空间。当字符串为静态字符串时,用于记录剩余空间;当字符串为动态
时,始终为0,且没有鸟用。
为避免free的被意外缩小,我们不允许外部访问访问该变量,因此定义为private
*若想增大空间,请使用speace()函数;若要查询剩余空间,请使用freeSpeace()函数。
bool dynamic = true;
类型:public
bool
bool类型,标记字符串为动态/静态。
设置为true时,字符串为动态;设置为false时,字符串为静态。默认为动态。
某些情况下,我们可能不希望字符串为动态,当同时又想要使用dstring的功能,那么就可以手动 将其设置为false,当作静态字符串使用。
int add(const char* buff_new);
类型:public
int
用途:
向字符串尾部追加字符串
参数:
一个参数:const char* buff_new
用于传递要追加的字符串
返回值:
int类型。返回0为成功;返回1为失败
int speace(int size);
类型:public
int
用途:
当字符串为静态时,用于申请空间;当字符串为动态时莫得用。
参数:
一个参数:int size
表示需要创建的空间大小
返回值:
int类型。返回0为申请成功;返回1为申请失败。
int write(const char* buffer);
类型:public
int
用途:
用于写入字符串(会覆盖原有的内容)
参数:
一个参数:const char* buffer
用于传递需要写入的字符串
返回值:
int类型。返回0成功;返回1失败。
void remove();
类型: public
void
用途:
用于删除字符串
因为使用了动态内存分配,且字符串直接存储在内存中,由指针进行操作,没有进行任何封装。 所以使用完毕后应当在合适的位置用这个函数删除分配过的空间。
dstring subString(int beginning, int length);
类型: public
void
用途:
用于从字符串中截取一部分。
参数:
两个参数:int beginning
int length
1. 表示启始位置(的下标)
2. 表示截取长度(单位:字节)
返回值:
dstring类型。返回截取的字符串
char* stringLocation();
类型: public
char*
用途:
用于查询动态字符串在内存中的位置(把动态字符串转换为char*类型(C标准字符串类型))
返回值:
char *类型。返回字符串在内存中的地址。
int getLength();
类型: public
int
用途:
查询字符串长度。
返回值:
字符串长度。
int freeSpeace();
类型: public
int
用途:
查询静态字符串的剩余空间。
返回值:
返回剩余空间
- 编译需要使用--std=c++17才能通过
- 使用完毕后应当在合适位置将变量删除,否则会造成内存泄露
- 不建议你访问设置为private的内容,因为之所以这么做是有原因的
- dstring类型在namespace std中,所以不能直接访问。记得加上using namespace std;