Advertisement
Darksider3

Untitled

Oct 11th, 2013
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "../str.h"
  2. #include <iostream>
  3. class darkstring
  4. {
  5.   friend darkstring & operator +=( darkstring & lhs, char const* rhs );
  6.   friend std::ostream & operator <<( std::ostream &  lhs,  darkstring const & rhs );
  7.   private:
  8.     char *dstr;
  9.     unsigned int dstrlength;
  10.   public:
  11.     darkstring(const char* str)
  12.     {
  13.       int i=0,length=mystrlen(str);
  14.       dstrlength=length;
  15.       dstr=new char[length+1];
  16.       while(i < length)
  17.       {
  18.         dstr[i]=str[i];
  19.         i++;
  20.       }
  21.       dstr[i]='\0';
  22.     }
  23.     unsigned int size() const
  24.     {
  25.       return dstrlength;
  26.     }
  27. };
  28. darkstring & operator+=(darkstring &  lhs,  char const* rhs )
  29. {
  30.   int newLength=lhs.size() + mystrlen(rhs)+1, lhs_size=lhs.size();
  31.   int i=0,y=0;
  32.   char *newSTR=new char[newLength];
  33.   while(i<lhs_size-1)
  34.   {
  35.     newSTR[i]=lhs.dstr[i];
  36.     i++;
  37.   }
  38.   while(i<newLength-1)
  39.   {
  40.     newSTR[i]=rhs[y];
  41.     y++;
  42.     i++;
  43.   }
  44.  
  45.   //Nullbyte
  46.   newSTR[i]='\0';
  47.   delete[](lhs.dstr);
  48.   lhs.dstr=newSTR;
  49.   return lhs;
  50. }
  51. std::ostream & operator<<(std::ostream &  lhs,  darkstring const & rhs )
  52. {
  53.   return lhs<<rhs.dstr;
  54. }
  55. int main(int argc, char** argv)
  56. {
  57.   darkstring str="Hallo";
  58.   str +=" Welt";
  59.   std::cout << str;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement