自己实现的标准C++ string 类
来源:互联网 发布:搞笑淘宝买家秀图对比 编辑:程序博客网 时间:2024/05/18 18:00
自己实现的 string 类。
- #include<iostream>
- using namespace std;
- class string
- {
- friend ostream &operator<<(ostream &, string &) ;
- public:
- string(const char *str = NULL);
- string(const string &from);
- string &operator=(const string &other);
- string operator+(const string &rhs) const;
- bool operator==(const string &rhs);
- char &operator[](unsigned int n);
- size_t size(){return strlen(m_data);}
- ~string(){delete m_data;};
- private:
- char *m_data;
- };
- inline string::string(const char *str)
- {
- if(!str){
- m_data = 0;
- }
- else{
- m_data = new char[strlen(str) + 1];
- strcpy(m_data, str);
- }
- }
- inline string::string(const string &from)
- {
- if(!from.m_data){
- m_data = 0;
- }
- else{
- m_data = new char[strlen(from.m_data) + 1];
- strcpy(m_data, from.m_data);
- }
- }
- inline string &operator=(const string &other)
- {
- if(this != &other)
- {
- delete m_data[];
- if(!other.m_data){
- m_data = 0;
- }
- else{
- m_data = new char[strlen(other.m_data) + 1];
- strcpy(m_data, other.m_data);
- }
- }
- return *this;
- }
- inline string string::operator+(const string &rhs) const
- {
- string newString;
- if(!other.m_data){
- newString = *this;
- }
- else if(!m_data){
- newString = rhs;
- }
- else{
- newString = new char[strlen(m_data)+ strlen(rhs.m_data) + 1];
- strcpy(newString.m_data, m_data);
- strcat(newString.m_data, rhs.m_data);
- }
- return newString;
- }
- inline bool string::operator==(const string &rhs)
- {
- if(strlen(m_data) != strlen(rhs.m_data)){
- return false;
- }
- else{
- return strcmp(m_data, rhs.m_data)?false:true;
- }
- }
- inline char &string::operator[](unsigned int n)
- {
- if(n >= 0 && n <= strlen(m_data)){
- return m_data[n];
- }
- }
- ostream &operator<<(ostream &os, string &str)
- {
- os<<str.m_data;
- return os;
- }
有不完善的地方,将继续补充。
- 自己实现的标准C++ string 类
- [C/C++标准库]_[初级]_[如何实现std::string自己的Format(sprintf)函数]
- 自己实现的string类
- 自己实现的string类
- 自己实现的String类
- 【学习笔记】【C++】自己实现string类
- 自己实现自己的String.....
- 实现自己的string
- C字符串和标准的C++string类
- C字符串和标准的C++string类
- 【C/C++】标准C++中的string类的用法总结
- 自己实现String类
- 自己实现String类
- string类自己实现的版本
- 自己实现简单的string类
- 自己实现简单的string类
- 自己实现string类的相关函数
- C++实现一个自己的string类
- Tomcat研究之ClassLoader
- 俞敏洪谈大学生就业 (荐)
- 关于.Net的强名称(Strong Name)
- JavaScript 模擬產生 GUID
- 发布VB6安全多线程组件MT32.dll(1.0.0.2)
- 自己实现的标准C++ string 类
- C# interface 接口理解
- 海量数据(数据量比较大时)的处理分析
- CEGUI小结
- ACL编程之父子进程机制,父进程守护子进程以防止子进程异常退出
- .NET连接ORACLE数据库的方法及示例
- 开饰品店选址是关键
- HashpMap与HashTable的区别
- 重新啟動 GNOME 不要重開機