代码之家  ›  专栏  ›  技术社区  ›  Benj

std::string和std::basic_string之间有什么区别?为什么两者都需要?

  •  66
  • Benj  · 技术社区  · 15 年前

    两者之间有什么区别 std::string std::basic_string ? 为什么两者都需要?

    3 回复  |  直到 15 年前
        1
  •  71
  •   CB Bailey    15 年前

    std::basic_string 是用于从字符类型生成字符串的类模板, std::string 是一个 typedef 对于该类模板的专门化 char . 是的,它们都是必需的(或至少是标准要求的)。

        2
  •  58
  •   hackjutsu Jan Galinski    8 年前

    std::string 是的一个实例 std::basic_string<T>

    typedef std::basic_string<char> string
    

    std::basic_string 对于所有类型的字符串都必须有一个类似的接口( wstring 例如)。

        3
  •  24
  •   Zanson    15 年前

    A std::string std::basic_string 类型为的模板 char . 你需要两者,这样你就可以把东西串起来 那么 std::basic_string<wchar_t> 对于宽字符字符串。或者如果您想要一个包含32位元素的字符串, std::basic_string<unsigned int> .

        4
  •  0
  •   Spyros Mourelatos    4 年前

    std::string 是一个专业化的 basic_string 它还默认了除字符类型之外的一些其他参数。基本字符可以有自定义字符类型(例如,基本字符可以有宽字符)、自定义字符特征(例如,基本字符可以有宽字符,但支持普通字符的所有操作)和自定义分配器(对于自定义调试器或静态内存管理,基本_字符串可以包含一些额外的信息)。

    有用性

    将所有这些参数默认为合理值,因为在大多数情况下,您只需要 这就是它的有用性。另一方面,无论何时你需要更多的定制 std::basic_string . 所以两者都有不同的目的