C ++中存在多少个字符串类型?

时间:2010-11-23 11:02:04

标签: c++ string types

如何在C ++中使用字符串肯定有很多方法:char*w_char*CStringstd::string,然后是某些类型的定义,如LPTSTR等除了经验丰富的C ++程序员之外,没有其他人能够理解的字母排列。

我记得读过一篇文章(很久以前),作者在处理字符串时批评了C ++的不一致性。他在C ++中给出了确切数量的各种字符串类型。我想要找到这篇文章,或者其他一些提供C ++中可用的字符串类型的引用。

因为很明显,任何时候都可以创建另一个typedef,问题是: 目前在C ++中已知的常用字符串类型数的最高下限是多少?

2 个答案:

答案 0 :(得分:1)

  

C ++中存在多少种字符串类型?

语言中定义了三种字符串类型(请参阅Wikipedia):

  • std::stringbasic_string<char>的typedef)
  • std::wstringbasic_string<wchar_t>的typedef)
  • basic_string(课程模板)

char *不是字符串。它是指向char的指针。

w_char*不是字符串。它是指向w_char的指针。

CString未在语言中定义。

当然,我可以创建自己的类似字符串的类型:CCoolString。当你附加's'时,它会被存储为'z'。但它不是语言本身的一部分 - 它只是我的代码。在内部,它将使用std::string


  

目前C ++中已知的常用字符串类型数量的下限是多少?

不是一个真正的问题。它无法回答,因为它取决于用户。

答案 1 :(得分:0)

C ++中没有默认的字符串类型。使用char *和w_char *可以创建他/她想要的任何数量的字符串。 std :: string,CString和LPTSTR都是不同库的一部分,我不确定它们是否是标准的一部分。 (他们可能是,也可能不是)。 您可以创建自己的MarekString,它也可以是字符串类型。 并且因为C ++实际上是不一致的,即使我记得Joel Spolsky提出的一个建议,使其成为默认数据类型。

P.S。你忘了char []和w_char [],它们与那些*对应物略有不同。