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

操作单个宽字符

  •  -2
  • BingBang32  · 技术社区  · 7 年前

    快速提问,将我的15k线框架移植到UTF16:)

    我是否像这样操纵单个wchar\t?

    wchar_t Help[128];
    Help[0] = '?'
    Help[1] = '/0'
    

    wchar_t Help[128];
    Help[0] = L'?'
    Help[1] = L'/0'
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Remy Lebeau    7 年前

    您不应分配 char 直接发送到 wchar_t 如果没有类型转换,否则编译可能会发出有关数据丢失的警告。

    如果不为字符文字加前缀,它将具有类型 烧焦 所以 Help[0] = '?' 不会编译。

    如果在字符文字前加前缀 L ,它将具有类型 wchar\u t 相反,所以 Help[0] = L'?' 将编译。

    请注意 wchar\u t 并非所有平台上都是16bit。它在Windows上,但在许多其他平台上,它是32位的,因此将用于UTF-32而不是UTF-16。如果要在所有平台上使用UTF-16,应使用 char16_t 以及 u C11中引入的文字前缀:

    char16_t Help[128];
    Help[0] = u'?';
    Help[1] = u'\0';