操纵一个宽的字符

时间:2018-03-17 20:40:37

标签: c string windows unicode utf-16

快速提问,将我的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 个答案:

答案 0 :(得分:0)

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

如果您没有为字符文字添加前缀,则它将具有char类型,因此Help[0] = '?'将无法编译。

如果您使用L为字符文字添加前缀,则其类型为wchar_t,因此Help[0] = L'?'将会编译。

请注意,wchar_t在所有平台上都不是16位。它在Windows上,但在许多其他平台上,它是32位,因此将用于UTF-32而不是UTF-16。如果您想在所有平台上使用UTF-16,您应该使用{CES中引入的char16_tu文字前缀:

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