如何在c ++中创建字符串类型?

0 c c++ arrays string character

如何在C++中创建"字符串"类型?在C中,字符串是字符数组,但是C++如何将字符数组转换为我们在C++中知道的"字符串"?

Ric*_*son 8

字符数组仍在那里,它只有一个包裹着它的类.想象一下这样的事情:

class String
{
private:
  char* stringData;

public:
  String(const char* str)
  {
    stringData = new char[strlen(str)+1];
    strcpy(stringData, str);
  }

  ~String() { delete[] stringData; }

  String& operator += (const String& rhs)
  {
    char* newStringData = new char[strlen(rhs) + strlen(stringData) + 1];
    strcpy(newStringData, stringData);
    strcpy(newStringData + strlen(stringData), rhs);
    delete[] stringData;
    stringData = newStringData;
    return *this;
  }
};
Run Code Online (Sandbox Code Playgroud)

这显然是一个非常不完整的例子,但是你明白了,对吧?

std :: string的实际实现非常全面,但是你自己做不了什么.以下是我发布的官方std :: string类的一些不同之处:

  • 字符串的长度通常作为成员变量包含在内,因此您不必一直调用strlen来查找长度.
  • std :: string类使用模板,因此您不仅限于char类型.如果您使用的是Unicode,则可以使用std :: wstring,它通过将char类型替换为wchar_t类型来使用16位或32位字符串.
  • 通常有很多优化可供选择.最近最受欢迎的是"短串"优化.

一旦你对C++比较熟悉,你应该尝试编写自己的字符串类.这不是你在实践中会使用的东西,但对于图书馆写作来说这是一个非常好的练习.