string 的简单实现
来源:互联网 发布:商城建站java 编辑:程序博客网 时间:2024/05/01 16:05
#pragma once #define _CRT_SECURE_NO_WARNINGS #include<cstring> #include<iostream> #include<utility> #include <assert.h> namespace YJ { class string { friend std::ostream& operator<<(std::ostream& out, const string& str) { out << str.m_data; return out; } friend std::istream& operator>>(std::istream& in, const string& str) { in >> str.m_data; return in; } public: string() :m_data(new char[1]) { *m_data = '\0'; } string(size_t n, const char ch) { assert(n > 0); m_data = new char[n + 1]; for (size_t i = 0; i < n; i++) { m_data[i] = ch; } m_data[n] = '\0'; } string(const char* str):m_data(new char[strlen(str)+1]) { strcpy(m_data,str); } //string(const string& rhs) :m_data(new char[strlen(rhs.m_data)+1]) { // strcpy(m_data,rhs.m_data); //} //c++11委托 string(const string & rhs) :string(rhs.m_data) { } //移动构造 string(string &&rhs): m_data(rhs.m_data){ rhs.m_data = nullptr; } //string& operator=(const string& rhs) { // if (&rhs == this) return *this; // m_data = new char[strlen(rhs.m_data) + 1]; // strcpy(m_data, rhs.m_data); //return *this; //} //c++11写法 string& operator=(string rhs) { swap(rhs); return *this; } void swap( string& rhs) { std::swap(*this, rhs); } size_t size() { return strlen(m_data); } const char* c_str() { return m_data; } ~string() { delete[] m_data; } private: char *m_data; }; }
0 0
- 简单的string实现
- string的简单实现
- string 的简单实现
- string类的简单实现
- c++ string的简单实现
- string类的简单实现
- String 类的简单实现
- 简单的string类实现
- string类的简单实现
- string 类的简单实现
- 简单string 类的实现
- 简单的String类实现
- string类的简单实现
- String类的简单实现
- 简单的string类的模拟实现
- 一个简单的string类实现
- 一个简单的string类实现
- 一个C++ String类的简单实现
- 博客序言
- 人脸肤色检测模型
- Json简介
- Nginx 模块自主开发二:Nginx的类型命名封装
- [LeetCode]problem 77. Combinations
- string 的简单实现
- mac tool
- 自定义控件之A-Z快速检索QuickIndexBar
- Android中线程那些事儿
- 整数划分
- Material Design Library系列之CoordinatorLayout
- Google 的开源技术protobuf 简介与例子
- [LeetCode]problem 148. Sort List
- JVM内部结构