从char到QChar
char类型是c/c++中内置的类型,描述了1个字节的内存信息的解析。比如:
char gemfield=’g’;
那么在由gemfield标记的这块内存的大小就是1个字节,信息就是01100111,8位。
再比如:
char gemfield=’汉’;
那么由gemfield标记的这块内存的大小依然是1个字节,存储的信息是:0xBA,这是因为在windows系统中,汉字是以gbk编码(ANSI)存储的,“汉”这个字的编码是0xBABA,因为char只有1个字节,所以就把低字节存储过来。
经过gemfield上面的介绍后,你已经理解了char这个内置类型的用法,也就理解了下面语句的输出了:
char gemfield=0×40;
printf(“gemfield’s value is %c”,gemfield);
现在我们来看看QChar,QChar是Qt处理字符的基本类型,是对unicode字符的封装。QChar使用2个字节的内存,在其内部维护了一个unsigned short 类型的内存(大多数的编译工具也会把它当作unsigned short类型)。使用的是ucs-2标准。
首先,QChar封装一个char类型是相当容易理解的,char类型作为QChar的构造参数时,会被转换为unsigned short,继而可被QChar接管。
其次,QChar封装一个unsigned short类型也是容易理解的,比如:
QChar gemfield=0x6C49;
0x6C49是“汉”字的unicode编码,这样,依据Qt内部使用的unicode表和codec插件, gemfield就可以被成功解析为“汉”这个字。
最后,下面这种情况是QChar不能处理的:
QChar gemfield = ‘汉’;
因为在windows上,“汉”的编码是gbk编码,值为0xBABA,正如gemfield上文提到的那样。这样,由QChar维护的unsigned short内存上的信息是0xBABA,这个值并不是unicode编码(unicode编码值是gemfield上文中提到的0x6C49),所以解析不了。
同理,QChar可以通过unicode()函数返回一个字符的unicode编码。
QChar提供了丰富的函数,来实现一些字符的转换操作和字符的判断操作,关于这些方面的疑问,请参考Qt的文档,或者去http://civilnet.cn/qt上提问。。
从char到QChar的更多相关文章
- char和QChar(Unicode的编码与内存里的值还不是一回事)
char类型是c/c++中内置的类型,描述了1个字节的内存信息的解析.比如: char gemfield=’g’; 那么在由gemfield标记的这块内存的大小就是1个字节,信息就是01100111, ...
- char和QChar(Unicode的编码与内存里的值还不是一回事)
char类型是c/c++中内置的类型,描述了1个字节的内存信息的解析.比如: char gemfield=’g’;那么在由gemfield标记的这块内存的大小就是1个字节,信息就是01100111,8 ...
- QSting, QChar, char等的转换
1,QChar 转换char: char QChar::toLatin1();char QChar::toAscii(); 2,Char转QChar: QChar(char ch); 3,QStrin ...
- QT之QChar
QChar 类是 Qt 中用于表示一个字符的类,实现在 QtCore 共享库中.QChar 类内部用2个字节的Unicode编码来表示一个字符. Qchar构造函数: QChar ch=QChar() ...
- Qt的QVariant类
QStandardItemModel类中的函数 bool setData(const QModelIndex &index, const QVariant &value, int ro ...
- QVariant实质
QVariant实质 QVariant是一种可以存储不同类型的数据结构,在很多场合这是很有用得为了达到这种目的,可以想象,该对象应该存储对象的类型信息,数据信息以及其他辅助详细考虑用途,这种对象必须支 ...
- QT_NO_CAST_FROM_ASCII这个宏的,禁用一切来自双引号字符串字面量传入QString(有2种解决方法)
这两天制作了两个Qt Creator增强套装的两个插件,其实也是非常简单的,但是其实花了我超过四天的时间,为什么呢?因为我之前很长一段时间都是在Linux下开发的,一切安好,没有任何问题,但是到了Wi ...
- 【转载】Qt中的QString,QByteArray,Qchar, char*
先要说的是QString. 之所以把QString单独拿出来,是因为string是很常用的一个数据结构,甚至在很多语言中,比如JavaScript,都是把string作为一种同int等 ...
- Qt 文件处理(readLine可以读取char[],并且有qSetFieldWidth qSetPadChar 等全局函数)
Qt 文件处理 Qt提供了QFile类来进行文件处理,为了更方便地处理文本文件或二进制文件,Qt还提了QTextStream类和QDataStream类,处理临时文件可以使用QTemporaryFil ...
随机推荐
- JDK + Tomcat 安装 + 制作自定义镜像【第 3 篇 系统镜像】
[第 1 篇 JDK]:https://www.cnblogs.com/del88/p/11842387.html[第 2 篇 Tomcat]:https://www.cnblogs.com/del8 ...
- echarts 内存泄漏
最近使用vue + Echarts 实现vue项目的数据可视化功能的时候,在ios环境下,点击列表页进入详情页几次就白屏了. 感觉白屏的原因是:echarts频繁初始化画图时候有内存泄漏,吃掉了所有内 ...
- asp.net ListView控件的简单实用和配置
1 web窗体界面代码 ItemType:控件要绑定的实体模型 SelectMethod:控件获取实体集合的后台方法 DataKeyNames:实体的主键 UpdateProduct:设置跟新的方法 ...
- 捕捉Promise reject 错误
var sleep = function (time) { return new Promise(function (resolve, reject) { setTimeout(function () ...
- 安卓开发之ArrayAdapter使用
package com.lidaochen.test; import android.support.v7.app.AppCompatActivity; import android.os.Bundl ...
- 一个比ES处理数据更快的工具--Hubble.Net
http://www.cnblogs.com/eaglet/tag/Hubble.Net/
- Delphi 编写线程的清除代码
- centos7支持exfat
centos7支持exfat https://blog.csdn.net/shile/article/details/52202030 sudo rpm -Uvh http://li.nux.ro/d ...
- 少有人知的 GitHub 使用技巧
GitHub 大家常上吧?可是使用 GitHub 的各种小窍门你就不一定知道了.本文将各种使用 GitHub 的小窍门分享给大家. diff时忽略空格 有些修改只是增减了空格,在URL中添加?w=1就 ...
- 常量和iota
定义常量时如果不是必须指定特定类型,可以省略类型,使用默认类型.且数值类型常量(不定义类型)可以直接进行运算 常量的值可以是表达式,但是不允许出现变量 func main() { const a st ...