參考 mo_guang 的博客http://blog.csdn.net/moxiaomomo/article/details/6411584
Cstring主要包括字符串=,==,+,>>,<<等符號的重載.
#include
#include
using namespace std;
class String
{
public:
String(const char*str=NULL);
String(const String &other);
String& operator =(const String &other);//重載=運算符
String operator+(const String &other);//重載+運算符
bool operator ==(const String&);//重載==運算符
char& operator [](unsigned int);//重載取下標運算符
friend ostream& operator << (ostream&,String&);//重載<<運算符
friend istream& operator >> (istream&,String&);//重載輸入運算符
~String(void) {delete[] m_data;}
private:
//public:
char *m_data; // 用於保存字符串
};
String::String(const char* str)
{
if(!str) m_data=0;
else
{
m_data=new char[strlen(str)+1];
strcpy(m_data,str);
}
}
String::String(const String& other)
{
if(!other.m_data) m_data=0;
else
{
m_data=new char[strlen(other.m_data)+1];
strcpy(m_data,other.m_data);
}
}
String& String::operator =(const String &other)
{
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;
}
String String::operator + (const String &other)
{
String newString;
if(!other.m_data)
newString=*this;
else if(!m_data)
newString=other;
else
{
newString.m_data=new char[strlen(m_data)+strlen(other.m_data)+1];
strcpy(newString.m_data,m_data);
strcat(newString.m_data,other.m_data);
}
return newString;
}
bool String::operator ==(const String& s)
{
if(strlen(m_data)!=strlen(s.m_data))
return false;
return strcmp(m_data,s.m_data)?false:true;
}
char& String::operator [](unsigned int num)
{
if(num>=0&&num> (istream& is,String& str)
{
char temp[255];
is>>temp;
str=temp;
return is;
}
int main()
{
String str1("love");
String str2=str1;
cin>>str2;
String str=str1+str2;
cout<