说说char续

55 篇文章 0 订阅
13 篇文章 0 订阅

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

gcc在window下内存:





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



windows平台:


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



结论:

  • 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扩展函数,为跨平台迁移带来了一些问题。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值