自己动手学string类( 二 )

          上次由于临时有事就匆匆结束了“自己动手写string类”,下来就继续我们的“自己动手写string类”。

          我们都知道可以直接进行这样的操作:str1 > str2;    str1< str2; str1==str2等,其实我们只要对这些符号进行重载,就可以很方便的使用它了。如下:

          重载运算符 >

          friend bool  operator>(const String& s1,const String& s2)
         {
                 if(strcmp(s1.str, s2.str) > 0)                //比较两字符串,大于返回真,否则返回假
                           return 1;
                else
                           return 0;
  
         }

 

         同理,

        friend bool  operator>(const String& s1,const String& s2)
         {
                 if(strcmp(s1.str, s2.str) < 0)                //比较两字符串,小于返回真,否则返回假
                           return 1;
                else
                           return 0;
  
         }

         

         friend bool  operator>(const String& s1,const String& s2)
         {
                 if(strcmp(s1.str, s2.str) == 0)                //比较两字符串,相等返回真,否则返回假
                           return 1;
                else
                           return 0;
  
         }

 

         两个字符串还可以相加, 如 str3 = str1+ str2;

       String operator+( const String& s)
       {
                 int total = len + s.getlen();     //把相加后的字符串的长度保存在total中;
                 String temp(total);                 //对象初始化长度,这里会调用下面的构造函数String(unsigned int len1) ;

                 int i, j ;
                for(i=0; i < len; i++)        
                       temp[i] = str[i] ;                //把字符串1先保存到temp中
                for(j=0; j < s.getlen(); j++,i++)
                       temp[i] = s[j];                  //再把字符串2接着保存在后面
                temp[total] = '\0';                   

                return  temp;
        }

 

         这里我们再写一个构造函数

         String(unsigned int len1) { 
                len = len1; 
               str = new char[len1+1];
               int i;
              or(i=0; i<=len1; i++)
                          str[i] = '\0';
         }

 

          还要补充一个去字符串大小的函数

          int getlen()const
          {
                 return len;
          }

 

        因为我们的动态申请内存空间的,所以在对象结束它的生命期的时候应该释放其占有的内存,我们写一个析构函数来完成这样的功能。

          ~String()

          {
                delete []str;
                len = 0;
           }

     

         到此,String类的最基本功能就算完成了,但string类本身远远不止这些功能。之所以自己动手写String类一是为了练手,二是希望很朋友们交流!!好吧,今天就到这里咯!!

         如有不对或欠缺的地方,请大家不吝赐教,我不胜感激!!


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值