C++——自己实现一个String类

2020-10-28  本文已影响0人  StevenHD
#include <iostream>
#include <cstring>

using namespace std;

// #ifndef STRING_H
// #define STRING_H
// #endif // STRING_H

class String
{
public:

    // String();
    String(const char *s = NULL);
    char * c_str();
    ~String();

private:
    char *_str;
};

// String::String()
// {
//     _str = new char[1];
//     *_str = '\0';
// }

String::String(const char *s)
{
    if (s == NULL)
    {
        _str = new char[1];
        *_str = '\0';
    }
    else
    {
        int len = strlen(s);
        _str = new char[len + 1];
        strcpy(_str, s);
    }
}

char * String::c_str()
{
    return _str;
}

String::~String()
{
    delete []_str;
}


int main()
{
    string s1;              // char * _str = "";
    string s2("abcdefg");   // char * str = "abcdefg";
    
    cout << s1.c_str() << endl;
    cout << s2.c_str() << endl;
    
    /////////////////////////////////////////////////////
    
    String ms1;
    String ms2("China");
    
    cout << ms1.c_str() << endl;
    cout << ms2.c_str() << endl;
    
    /////////////////////////////////////////////////////
    
    string *ps = new string("haha");
    cout << (*ps).c_str() << endl;
    delete ps;
    
    String *pms = new String("heihei");
    cout << (*pms).c_str() << endl;
    delete pms;
    
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读