从的C++ 0x工作草案,新char型(char16_t和char32_t)的将是底层类型)。符号性处理Unicode的将无符号(<strong>uint_least16_t</strong>和<strong>uint_least32_t</strong>炭和Unicode中的C++ 0x
但就我所看到的(不是很远也许)类型char8_t(基于uint_least8_t)没有定义。为什么?
当你看到一个新的U8编码前缀引入UTF-8字符串字面...基于老朋友(符号/无符号)字符它甚至更加混乱。为什么?
更新: 有添加一个新的类型的建议:char8_t
char8_t:A型为UTF-8字符和字符串 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0482r0.html
如果我想存储字符é(U + 00E9),即两个字节序列0xC3 0xA9,并带有一个有符号字符数组,它将失败:signed char e_acute = {0xC3,0xA9} =>这将截断价值。 所以如果你的系统把char定义为signed char,它仍然是一个问题。我错了吗 ? – anno 2010-03-06 04:17:31
很少需要手动输入字节:通常,就像你说的那样,使用'u8'。所以,在这种情况下,高字节会被视为负数。 – 2010-03-06 04:31:51
Chris,有没有保证转换对'unsigned char - > signed char - > unsigned char'会产生原始值?前者的转换是实现定义的,我找不到可以保证往返的任何子句。 – avakar 2010-03-06 06:00:22