2010年10月23日土曜日

C++ 標準ライブラリ string の代替を実装してみる

C++の利用者なら必ずお世話になるstringクラス。
この代替を実装してみる。

ちなみに、stringクラスと呼んだが、実際はbasic_stringというテンプレートクラスをtypedefしたものである。
下のとおりである。厳密にはクラスではない。念のため。

typedef basic_string<char> string;

#include <iostream>
#include <string.h>

class My_string
{
  private:
  char *ptr;

  public:
  My_string(char *p)
  {
    std::cout<<"My_string : constructor"<<std::endl;
    size_t len = strlen(p) + 1;
    ptr = new char[len];
    memcpy(ptr, p, len);
  }

  ~My_string()
  {
    std::cout<<"My_string : destructor"<<std::endl;
    delete[] ptr;
  }
};


int main()
{
  char *pname;
  pname = "test";
  My_string my_string(pname);
  return 0;
}