对字符串进行的操作

  1. #include <iostream.h>  
  2. #include <cstring>  
  3. #include<windows.h>  
  4. class String  
  5. {  
  6. public:  
  7. String(){p=NULL;}  
  8. String(const String &);  
  9. String(char *str);  
  10. ~String();  
  11. String & operator=(const String &);  
  12. String operator+(const String &);  
  13. friend bool operator>(String &string1,String &string2);  
  14. friend bool operator< (String &string1, String &string2);  
  15. friend bool operator== (String &string1, String &string2);  
  16. friend bool operator!= (String &string1, String &string2);  
  17. friend ostream& operator << (ostream&,const String&);    
  18. friend istream& operator >> (istream&,String&);     
  19. void display();  
  20. private:  
  21. char *p;  
  22. };  
  23. String::String(const String &s)  
  24. {  
  25. if(s.p)  
  26.    p=new char[strlen(s.p)+1];   
  27. else p=0;    
  28.     strcpy(p,s.p);    
  29. }    
  30.   
  31. String::String(char *str)  
  32. {  
  33.  p=str;  
  34. }  
  35. String::~String()  
  36. {  
  37.  if(p!=NULL)  
  38.  delete p;  
  39.  p=NULL;  
  40. }  
  41. String& String::operator=(const String &s)  
  42. {  
  43. if(p)   
  44. {delete[]p; p=new char[strlen(s.p)+1];}  
  45. else    
  46. p=new char[strlen(s.p)+1];  
  47. strcpy(p,s.p);  
  48.         return *this;  
  49. }  
  50. String String::operator +(const String &s)  
  51. {  
  52.  String temp;  
  53.  if(temp.p!=NULL)  
  54.  delete[]temp.p;  
  55.  temp.p = new char[strlen(p)+strlen(s.p)+1];  
  56.  strcpy(temp.p,p);  
  57.  strcat(temp.p,s.p);  
  58.  return temp;  
  59. }  
  60. bool operator>(String &string1,String &string2)  
  61. {  
  62.  if(strcmp(string1.p,string2.p)>0)  
  63.  return true;  
  64.  else  
  65.  return false;  
  66. }  
  67. bool operator<(String &string1,String &string2)  
  68. {  
  69.  if(!operator>(string1,string2))  
  70.  return true;  
  71.  else  
  72.  return false;  
  73. }  
  74. bool operator==(String &string1,String &string2)  
  75. {  
  76.  if(strcmp(string1.p,string2.p)==0)  
  77.  return true;  
  78.  else  
  79.  return false;  
  80. }  
  81. bool operator !=(String &string1, String &string2)  
  82. {  
  83.  if(!(string1.p==string2.p))  
  84.  return true;  
  85.  else  
  86.  return false;  
  87. }  
  88. ostream& operator <<(ostream &output,const String &s)  
  89. {  
  90.  output<<s.p;  
  91.  return output;  
  92. }  
  93. istream& operator >>(istream &intput,String &s)  
  94. {  
  95.  //cout<<"input a string:";  
  96.   
  97. char temp[100000] = {"",};  
  98.   
  99.  intput>>temp;  
  100. s.p=temp;  
  101.  return intput;  
  102. }  
  103. void String::display()  
  104. {  
  105.  cout<<p<<endl;  
  106. }  
  107. void compare(String &string1,String &string2)  
  108. {if(operator>(string1,string2)==1)  
  109.      { cout<<"string1>string2"<<endl;}  
  110. else  
  111. if(operator<(string1,string2)==1)  
  112. {  
  113.  cout<<"string1<string2"<<endl;  
  114. }  
  115. if(operator==(string1,string2)==1)  
  116. {  
  117.  cout<<"string1=string2<<endl";  
  118. }  
  119. if(operator==(string1,string2)!=1)  
  120. {  
  121.  cout<<"string1!=string2"<<endl;  
  122. }  
  123. }  
  124. int main()  
  125. {  
  126.  String string1("Hello"),string2("World");  
  127.  cout<<"输出string1:";  
  128.  string1.display();  
  129.  cout<<"输出string2:";  
  130.  string2.display();  
  131.  cout<<"比较string1和string2:";  
  132.  compare(string1,string2);  
  133.  String string4,string5,string6;  
  134.  cout<<"string1和string2连接后赋值给string4:"<<endl;  
  135.  string4=string1+string2;  
  136.  string4.display();  
  137.  cout<<"输入string5:";  
  138.  cin>>string5;   
  139.  cout<<"输出string5:"<<endl;  
  140.  cout<<string5<<endl;  
  141.  cout<<"string1赋值给string6:"<<endl;  
  142.  string6=string1;  
  143.  string6.display();  
  144.  system("pause");  
  145.  return 0;  
  146. }   


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值