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

这里只是简单实现了字符串的构造函数和赋值运算,其他待补充。
源码
//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;
}

你可能感兴趣的:(字符串-字符串类的实现(数据结构基础 第4周))