您的位置:首页 > 理论基础 > 数据结构算法

字符串-字符串类的实现(数据结构基础 第4周)

2016-07-05 16:28 337 查看
这里只是简单实现了字符串的构造函数和赋值运算,其他待补充。

源码

//String.h

#pragma
#include <string.h>

class String {
private:
char* str;   //字符串的数据表示
int sz;     //串的当前长度
public:
String():str(NULL),sz(0) {}
String(char* s) {
//先要确定新创字符串实际需要的存储时间,s的类型为(char*),作为新创字符串的初值。
//确定s的长度,用标准字符串函数strlen(s)计算长度
sz = strlen(s);
//然后,在动态存储区域开辟一块空间,用于存储初值s,把结束字符也包括进来
str = new char[sz+1];
//开辟空间不成功时,运行异常,退出
//      assert(str != NULL);
//用标准字符串函数strcpy,将s完全复制到指针str所指的存储空间
strcpy(str, s);
}
~String() {
delete [] str;  //必须释放动态存储空间
}
//此处返回值必须为引用
String& operator = (String& s) {
//参数s将被赋值到本串。
//若本串的串长和s的串长不同,则应该释放本串的str存储空间,并开辟新的空间
if (sz != s.size())
{
delete [] str;    //释放原存储空间
str = new char[s.size()+1];
sz=s.size();
}
strcpy(str, s.c_str());
return *this;  //返回本实例,作为String类的一个实例
}
int size() {
return sz;
}
char* c_str() {
return str;
}
};


//test.cpp

#include<iostream>
#include "String.h"
using namespace std;

int main() {
String s1("hello");
String s2("hello world");
s1=s2;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: