mystring.h

来自「一些学习c++的例题」· C头文件 代码 · 共 94 行

H
94
字号
#include <iostream>

using namespace std;

typedef char * PCHAR;
typedef const char * CPCHAR;

class CString
{
private:
   PCHAR string;

   int  strlen(CPCHAR s)
   {
      PCHAR p = (PCHAR)s;

      while ( *p++ );

      return p - (PCHAR)s;
   }

   PCHAR strcpy(PCHAR& dest, CPCHAR src)
   {
      if (!src) return NULL;

      if (dest) delete dest;
      dest = new char[strlen(src) + 1];
      PCHAR p = dest;
      while ( *p++ = *src++ );
      return dest;
   }

   PCHAR strcat(CPCHAR s1, CPCHAR s2)
   {
      PCHAR p = new char[strlen(s1) + strlen(s2) + 1], t = p;

      while ( *s1 ) *p++ = *s1++;
      while ( *p++ = *s2++ );
      return t;
   }

   bool strcmp(const char *s1, const char *s2)
   {
      for ( ; *s1 && * s2; s1++, s2++ )
	  if ( *s1 - *s2 != 0 ) return false;

      if ( *s1 || *s2 ) return false;

      return true;
   }

public:
   CString() : string(NULL) {}

   CString(CPCHAR s)
   {
      string = NULL;
      strcpy(string, s);
   }

   CString(const CString& s)
   {
      string = NULL;
      strcpy(string, s.string);
   }

   ~CString()
   {
      if (string) delete string;
   }

   CString& Concat(CPCHAR s)
   {
      PCHAR p = strcat(string, s);
      strcpy(string, p);
      return *this;
   }

   CString& Copy(const CString& s)
   {
      strcpy(string, s.string);
      return *this;
   }

   bool Compare(CString& s)
   {
      return strcmp(string, s.string);
   }

   void Print()
   {
      cout << string << endl;
   }
};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?