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

“UTF-16”和“std::wstring”有什么区别?

  •  10
  • hkBattousai  · 技术社区  · 15 年前

    这两种字符串存储格式有什么区别吗?

    3 回复  |  直到 11 年前
        1
  •  14
  •   DavidRR Chris Brandsma    11 年前

    std::wstring 是一个容器 wchar_t . 大小 乌恰 不指定Windows编译器倾向于使用16位类型,Unix编译器倾向于使用32位类型。

    UTF-16 是一种编码16位整数序列中Unicode代码点序列的方法。

    如果使用宽字符文本(例如。 L"Hello World" )不包含 BMP ,您最终会得到UTF-16,但这两个概念基本上是不相关的。如果使用BMP以外的字符, 标准::wstring 不会翻译 surrogate pairs 为您输入Unicode代码点,即使 乌恰 是16位。

        2
  •  6
  •   DavidRR Chris Brandsma    11 年前

    UTF-16是一种特定的Unicode编码。 std::wstring 是一个字符串实现,它使用 wchar_t 作为存储每个字符的基础类型。(相比之下,普通 std::string 使用 char ).

    与一起使用的编码 wchar_t 不一定非得是UTF-16,也可以是UTF-32。

        3
  •  2
  •   CashCow    11 年前

    UTF-16是用16字节元素表示的文本概念,但实际的文本字符可能由一个than元素组成

    wstring只是这些元素的一个集合,是一个主要关注它们的存储的类。

    wstring中的元素wchar_t至少为16位,但可以是32位。

    推荐文章