说说char续

上篇文章《说说char》对比了linux和windows上分别使用gcc和vc编译器的情况,如果都使用gcc编译器会怎样呢?

gcc在window下内存:

说说char续_第1张图片

说说char续_第2张图片



linux和windows上使用gcc和vc的QString又是怎么来实现的呢?linux平台:



windows平台:

说说char续_第3张图片

linux和windows平台上QString实现都是short来实现的,每个中文字符占用两个字节,编码是使用的utf-8。

在windwos下使用vc编译器生成的QString呢?


注意vc编译器8,文件保存为utf-8和gb2312,char仍旧是gb2312,wchar_t还是unicode,QString仍旧是两个字节的short,但是编码使用的是gb2312。


mingw编译gb2312文本需要添加编译参数 -finput-charset=GBK,gcc不管源码文件格式保存为什么,统一使用相同的方式保存,char:utf-8,wchar_t:unicode,QString:short utf-8

说说char续_第4张图片

说说char续_第5张图片

结论:

  • gcc在windows和linux平台下统一使用utf-8保存char,unicode保存whar_t
  • vc总是使用gbk保存char,unicode保存wchar_t
  • gcc和vc内部编码格式与源文件保存编码格式无关
  • QString的编码保存与编译器有关,但都是使用short来做容器

标准C++的实现中对wchar_t的支持不是很多,vc自己在库中大量添加了很多的wchar_t扩展函数,为跨平台迁移带来了一些问题。



你可能感兴趣的:(C++,C++,linux,linux,qt,qt,qt)