自定义String
来源:互联网 发布:怎样禁止下载软件 编辑:程序博客网 时间:2024/05/02 01:39
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <cstring>using namespace std;class String{public:String();String(const char* str);~String();String(const String& rhs);String& operator=(const String& rhs);String operator+(const String& rhs);char operator[](const unsigned int index);bool operator==(const String& rhs);friend ostream& operator<<(ostream& output, const String& rhs);//运算符重载使用友元函数int length();private:char* m_data;};String::String(){m_data = new char[1];m_data[0] = '0';}String::String(const char* str){if (str == NULL){m_data = new char[1];m_data[0] = '\0';}else{int len = strlen(str);m_data = new char[len + 1];//strcpy(m_data, str); /*请弃用strcpy */sprintf_s(m_data, len+1, "%s", str);}}String::~String(){delete[] m_data; //或者delete m_data;}String::String(const String& rhs){int len = strlen(rhs.m_data);m_data = new char[len + 1];//strcpy(m_data, rhs.m_data); /*请弃用strcpy */sprintf_s(m_data,len+1,"%s",rhs.m_data);}String& String::operator=(const String& rhs){if (this == &rhs){return *this;}delete[] m_data;int len = strlen(rhs.m_data) ;m_data = new char[len + 1];//strcpy(m_data, rhs.m_data); /*请弃用strcpy */sprintf_s(m_data,len+1,"%s",rhs.m_data);return *this;}String String::operator+(const String& rhs){String tmp;delete tmp.m_data;//tmp.m_data包含了'0'这个字符int len = strlen(m_data) + strlen(rhs.m_data)+1;tmp.m_data = new char[len];sprintf_s(tmp.m_data, len , "%s", m_data);strcat_s(tmp.m_data, len, rhs.m_data);return tmp;}char String::operator[](const unsigned int index){return m_data[index];}bool String::operator==(const String& rhs){return 0 == strcmp(m_data, rhs.m_data);}ostream& operator<<(ostream& output, const String& rhs){output << rhs.m_data;return output;}int String::length(){return strlen(m_data);}int main(){const char* p = "hello,wcy";String s0 = "hello,wcy";String s1(p);String s2(s0);String s3 = s0;s1 = s1;s3 = s1;String s4 = s3 + s1;bool flag = (s1 == s2);cout << s0 << " "<<s0.length()<<endl;char s = s3[0];cout<<s<<endl;return 0;}
0 0
- 自定义String
- 自定义string
- 自定义的string
- 自定义string类
- 自定义string类函数
- c++自定义String类
- String自定义截取
- 自定义string类
- c++自定义String类
- c++自定义String类
- String 自定义函数
- 自定义String类
- 自定义的string类
- 自定义String类
- 自定义实现String类
- 实现自定义string类
- c++自定义string类
- 自定义String类
- Markdown学习
- 不同编译器的类型字节
- java swing中Jtable+JScrollpane实现自动滚动到底部——测试真实有效
- grep -Ev和grep -v区别
- 日光倾城
- 自定义String
- JSONKIT导入
- 【转载】今天心情非常好,再发一组 Linq、 集合、数组、Lambda、QuerySyntax 的文章
- Java并发编程:Timer和TimerTask(转载)
- 你不知道的JavaScript--Item35 事件流与事件处理
- tomcat配置虚拟目录后出现404的解决方法
- (转)js(javascript) 继承的5种实现方式
- delete与delete[]的区别
- sublime编辑器设置