做网站怎么排版好看,深圳做网站龙华新科,沧州市,网站建设选哪家公司char一直都在使用并且大量的使用#xff0c;但是#xff0c;大部分都是在单一平台上#xff0c;那样没有太多的问题#xff0c;在windows上大量直接使用wchar_t来解决中文的问题。并且在使用跨平台时也大多直接使用了Qt的QString来节省了很多的麻烦#xff0c;但是现在项目…char一直都在使用并且大量的使用但是大部分都是在单一平台上那样没有太多的问题在windows上大量直接使用wchar_t来解决中文的问题。并且在使用跨平台时也大多直接使用了Qt的QString来节省了很多的麻烦但是现在项目中有不允许引入第三方库来处理字符串处理的问题在linux直接使用char完全没有问题而在windows上却成了乱码。为了解决这个问题我研究了一下两个平台下char的不同。下面是我的测试代码 char *a zh中;cout char: sizeof(a) a [ nbsp;a[0] a[1] a[2] a[3] a[4] ] endl;printf(%x, %x, %x, %x, %x\n, a[0], a[1], a[2], a[3], a[4]);wchar_t *b Lzh中;cout wchar: sizeof(b) b [ nbsp;b[0] b[1] b[2] b[3] b[4] nbsp;] endl;printf(%x, %x, %x, %x, %x\n, b[0], b[1], b[2], b[3], b[4]);string c zh中;cout string: sizeof(c) c [ c.c_str()[0] c.c_str()[1] c.c_str()[2] c.c_str()[3] c.c_str()[4] ] endl;wstring d Lzh中;wcout wstring: sizeof(d) nbsp;[ d.c_str()[0] d.c_str()[1] d.c_str()[2] d.c_str()[3] d.c_str()[4] ] endl; windows运行结果 linux运行结果 通过运行结果可以看出 windows和linux上英文是相同的都是ascii码.中文部分char是不同的wchar_t是相同的。b[4]已经不在是字符串的值了。每个wchar_t是占两个字节的长度。wstring是使用wchar_t存储的string是使用char来存储的。 下面具体查看一下内存里的数据windows下内存 linux下内存 char“中”的编码在windows下是0xd6 0xd0查询GB2312码表刚好是中。在linux下是0xe4 0xb8 0xad查询是UTF-8码表的”中“。wchar”中“的编码0x4e2d很明显是Unicode编码。 结论 vc在windows平台将char使用gb2312来存储中文。gcc在linux平台将char使用utf-8来存储文本。两者都将wchar_t使用unicode来存储。string使用char作为存储容器。wstring使用wchar_t来作为存储容器。转载于:https://www.cnblogs.com/Robotke1/archive/2013/05/11/3072493.html