在C++98中,为了支持Unicode字符,使用wchar_t类型来表示“宽字符”,但并没有严格规定位宽,而是让wchar_t的宽度由编译器实现,因此不同的编译器有着不同的实现方式,GNU C++规定wchar_t为32位,Visual C++规定为16位。由于wchar_t宽度没有一个统规定,导致使用wchar_t的代码在不同平台间移植时,可能出现问题。至于UTF-8编码的Unicode数据,C++11还是使用了8bits宽度的char类型数组来表示,而char16_t和char32_t的宽度由其名称可以看出,char16_t为16bits,char32_t为32bits。至此,C++中共有5种定义字符串的方式。字符串的正确显示依赖于输出环境。locale表示的是一个地域的特征,包括字符编码、数字时间表示形式、货币符号等。locale串使用“zh_CN.gbk”表示目的多字节字符串使用GBK编码。
暂无评论