Darksider3

C++ "darkstring", own implemented string manipulation

Oct 11th, 2013
67
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 darkstring  operator +( darkstring const & lhs, char const* rhs );
  7.   friend darkstring  operator +( darkstring const & lhs, darkstring const & rhs );
  8.   friend darkstring  operator +( char const * lhs, darkstring const & rhs );
  9.   friend std::ostream & operator <<( std::ostream &  lhs,  darkstring const & rhs );
  10.   private:
  11.     char *dstr;
  12.     unsigned int dstrlength;
  13.   public:
  14.     darkstring(const char* str)
  15.     {
  16.       int i=0,length=mystrlen(str);
  17.       dstrlength=length;
  18.       dstr=new char[length+1];
  19.       while(i < length)
  20.       {
  21.         dstr[i]=str[i];
  22.         i++;
  23.       }
  24.       dstr[i]='\0';
  25.     }
  26.     unsigned int size() const
  27.     {
  28.       return dstrlength;
  29.     }
  30. };
  31. darkstring & operator+=(darkstring &  lhs,  char const* rhs )
  32. {
  33.   int newLength=lhs.size() + mystrlen(rhs), lhs_size=lhs.size();
  34.   int i=0,y=0;
  35.   char *newSTR=new char[newLength];
  36.   while(i<lhs_size)
  37.   {
  38.     newSTR[i]=lhs.dstr[i];
  39.     i++;
  40.   }
  41.   while(i<newLength)
  42.   {
  43.     newSTR[i]=rhs[y];
  44.     y++;
  45.     i++;
  46.   }
  47.   //Nullbyte
  48.   newSTR[i]='\0';
  49.   delete[](lhs.dstr);
  50.   lhs.dstr=newSTR;
  51.   return lhs;
  52. }
  53. std::ostream & operator<<(std::ostream &  lhs,  darkstring const & rhs )
  54. {
  55.   return lhs<<rhs.dstr;
  56. }
  57. darkstring  operator +( darkstring const & lhs, char const* rhs )
  58. {
  59.   darkstring newSTR=lhs.dstr;
  60.   newSTR+=rhs;
  61.   return newSTR;
  62. }
  63. darkstring  operator +( darkstring const & lhs, darkstring const & rhs )
  64. {
  65.   darkstring newSTR=lhs.dstr;
  66.   newSTR+=rhs.dstr;
  67.   return newSTR;
  68. }
  69. darkstring  operator +( char const * lhs, darkstring const & rhs )
  70. {
  71.   darkstring newSTR=lhs;
  72.   newSTR+=rhs.dstr;
  73.   return newSTR;
  74. }
  75. int main(int argc, char** argv)
  76. {
  77.   darkstring str="Hallo ";
  78.   str +=" Welt";
  79.   std::cout << "----Referenz links------"<<std::endl;
  80.   std::cout << str+"--!!--!!" << std::endl;
  81.   std::cout << "---Beides Referenzen----"<<std::endl;
  82.   std::cout << str+str << std::endl;
  83.   std::cout << "---Referenz rechts------"<<std::endl;
  84.   std::cout << "!!--!!--"+str<<std::endl;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment