C++字符串的重载
来源:互联网 发布:淘宝网舞鞋 编辑:程序博客网 时间:2024/06/05 17:37
#include<iostream>#include<string.h>using namespace std;class String{public:String(){m_data = new char;m_data[0] = '\0';}String(unsigned int length){m_data = new char[length+1];m_data[0] = '\0';} String(char *str)//初始化 { m_data = new char[strlen(str)+1];strcpy(m_data,str); } String(const String &ch) //拷贝构造 { m_data = new char[strlen(ch.m_data)+1]; strcpy(m_data,ch.m_data); } String& operator = (const String &ch)//赋值 & { if(this == &ch)return *this;delete []m_data;m_data = new char[strlen(ch.m_data)+1];strcpy(m_data,ch.m_data);return *this; }friend bool operator > (const String &ch1,const String &ch2){return strcmp(ch1.m_data,ch2.m_data) > 0;}friend bool operator < (const String &ch1,const String &ch2){return strcmp(ch1.m_data,ch2.m_data) < 0;}friend bool operator == (const String &ch1,const String &ch2){cout<<"equal~~~!"<<endl;return strcmp(ch1.m_data,ch2.m_data)==0;}friend bool operator != (const String &ch1,const String &ch2){cout<<"Not equal~~!"<<endl;return (strcmp(ch1.m_data,ch2.m_data)==0) ? true:false;}String operator+(const String &ch){char *str;str = new char[strlen(m_data)+strlen(ch.m_data)+1];strcpy(str,m_data);strcat(str,ch.m_data);String tmp(str);delete []str;return tmp;/*String tmp;tmp.m_data = new char[strlen(m_data)+strlen(ch.m_data)+1];strcpy(tmp.m_data,m_data);strcat(tmp.m_data,ch.m_data);return tmp;*/}String operator+=(const String &ch){*this = *this->m_data + ch.m_data;return *this;/*String tmp;tmp.m_data = new char[strlen(m_data)+strlen(ch.m_data)+1];strcpy(tmp.m_data,m_data);strcat(tmp.m_data,ch.m_data);*this = tmp;return *this;*/}char& operator[](int index){return m_data[index];}friend ostream& operator<<(ostream& os,const String &str){os<<str.m_data;return os;}friend istream& operator>>(istream& is,const String &str){is>>str.m_data;return is;} ~String() { delete []m_data; }private: char* m_data;};
void main(){String ch1;String ch6(10);String str("j");ch6 = "sdfsfsdfsfs";String ch(str);ch1 = str;//cout<<(str+ch1)<<endl;ch = str + ch1 ;//cout<<ch<<endl;String ch2; ch2+=ch; cout<<ch2<<endl; ch1 != ch2; ch[2]; cout<<str<<endl;cin>>ch1; //cin以空格为一次读取标记 cout<<ch1<<endl;}
0 0
- [c++]String字符串类的运算符重载
- 不能重载的字符串
- C++字符串的重载
- 字符串的重载
- C语言的重载
- 【C++】函数的重载
- 【c++】函数的重载
- 字符串的运算符重载
- 字符串的运算符重载
- 重载的使用(C++)
- 奇怪的C++operator重载
- [C++]C++的函数重载
- objecitve-c 方法的重载
- c++-运算符的重载
- Objective-C 重载的问题
- c++/对*和->的重载
- 【c#】函数重载的条件
- c函数重载的实现
- leetcode: Remove Linked List Elements(java)
- Mininet: Cannot find required executable controller 问题解决方法
- 自定义标签
- 用截取的部分图像创建新图像--关于cvGetSubRect,cvGetImage的用法
- spring中事务和aop的顺序问题二(配置形式)
- C++字符串的重载
- java反射
- 字符编码笔记:ASCII,Unicode和UTF-8
- 字符串操作-各种字符串格式输出转换
- Android 顶部可以伸缩+头部固定+listview下拉刷新、上拉请求更多
- EditText:文本编辑框
- 你为Windows Server 2003终止支持做好准备了吗?
- 利用arm开发板交叉编译opencv249错误汇总
- js guid