欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > STL.string(下)

STL.string(下)

2025/2/22 2:25:41 来源:https://blog.csdn.net/weixin_67466860/article/details/143116714  浏览:    关键词:STL.string(下)

代码

  • 模拟string

模拟string

namespace lld
{class string{public:typedef char* iterator;typedef const char* const_iterator;//const迭代器,指向内容不可以修改iterator begin(){return _str;}iterator end(){return _str + _size;}const_iterator begin() const{return _str;}const_iterator end() const{return _str + _size;}/*string():_str(new char[1]),//为了和有参保持一致,析构时方便快捷_size(0),_capacity(0){_str[0] = '\0';}*///string(const char* str = nullptr)//strlen(str)直接崩溃//string(const char* str = '\0')//这是一个字符常量,表示空字符(null character)。//string(const char* str = "\0")//画蛇添足,因为""默认就是\0,以空字符结尾的字符串数组,长度为1。string(const char* str = "") //全缺省构造函数:_size(strlen(str)){_capacity = _size;_str = new char[_capacity + 1];strcpy(_str, str);}//拷贝构造string(const string& s):_size(s._size),_capacity(s._capacity){_str = new char[_capacity + 1];strcpy(_str, s._str);}//赋值//直接释放旧空间,开辟新空间,赋值string& operator=(const string& s){if (this != &s){char* tmp = new char[s._capacity + 1];//防止开辟失败strcpy(tmp, s._str);delete[] _str;_str = tmp;_size = s._size;_capacity = s._capacity;}return *this;}//析构~string(){delete[] _str;_str = nullptr;_size = _capacity = 0;}//重构方括号char& operator[](size_t pos){assert(pos < _size);return _str[pos];}const char& operator[](size_t pos) const//在同一个类中,可以定义多个重载的成员函数,它们的函数名相同,但参数列表(包括 const 属性)不同。{assert(pos < _size);return _str[pos];}size_t size() const{return _size;}bool operator>(const string& s) const{return strcmp(_str, s._str) > 0;}bool operator==(const string& s) const{return strcmp(_str, s._str) == 0;}bool operator>=(const string& s) const{return *this > s || *this == s;}bool operator<(const string& s) const{return !(*this >= s);}bool operator<=(const string& s) const{return !(*this > s);}bool operator!=(const string& s) const{return !(*this == s);}private:char* _str;size_t _size;size_t _capacity;};
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词