【问题标题】:Why is std::string implemented as basic_string of `char` and not `unsigned char`为什么 std::string 实现为 `char` 的 basic_string 而不是 `unsigned char`
【发布时间】:2017-05-14 20:02:22
【问题描述】:

typedef basic_string<char> string;

标准库中的所有std::string 工具都使用char。这是为什么?尽管 ASCII 表 (128) 的所有字符都适合 char 的范围(-128 到 127),但许多其他字符编码都使用 8 位表示。

在一串字符中包含“负”值有什么好处?

【问题讨论】:

  • 附注:char 可以有符号也可以无符号,它不是由 c++ 指定的
  • 这个问题不是骗人的,但this answer 的引述或多或少也回答了你的问题
  • char 可以是有符号或无符号的,并且可能包含超过 8 位,ASCII 也不是必需的。在您使用的系统上最有效的方法。

标签: c++ string


【解决方案1】:

字符串字面量属于const char* 类型,因此在执行std::string("fooo") 时需要O(n) 转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2015-04-28
    • 2018-03-11
    • 2011-04-06
    • 1970-01-01
    • 2013-07-18
    相关资源
    最近更新 更多