2.1.3 Qt字符串的转换 -- 2017.11.22
发布于:2017-11-22 17:20
1122,一二一,一二一,听说今天有大事发生.........好事坏事,都先留个脚印...
Qt字符串的转换
QString类提供了丰富的转换函数,可以将一个字符串转换为数值类型或其他其他的字符编码集
(1)QString::toInt()函数将字符串转换为整型数值,类似的函数还有toDouble()、 toFloat()、toLong()、toLongLong()等。例如:
QString str="125"; //初始化一个"125"的字符串
bool ok;
int hex = str.toInt(&ok,16); //ok=true,hex=293
int dec = str.toInt(&ok,10); //ok=true,hex=125
其中,int hex = str.toInt(&ok,16):调用QString::toInt()函数将字符串转换为整型数值,函数QString::toInt()有两个参数。第一个参数是一个bool类型的指针,用于返回转换的状态,当转换成功时设置为true,否则设置为false。第二个参数指定了转换的基数。当基数设置为0时,将会使用C语言的转换方法,即如果字符串以“0x”开头,则基础为16;如果字符串以“0”开头,则基数为8;其他情况下,基数一律是10。
(2)QString提供的字符编码集的转换函数将会返回一个const char*类型版本的QByteArray,即构造函数QByteArray(const char*)构造的QByteArray对象 QByteArray类具有一个字节数组,它既可以存储原始字节
(raw bytes),也可以存储传统的以“ ”结尾的8位的字符串。在Qt中,使用QByteArray比使用const char*更方便,且QByteArray也支持隐式共享。转换函数有以下几种:
1>toAscii():返回一个ASCII编码的8位字符串
2>toLatin1():返回一个Latin-1(ISO8859-1)编码的8位字符串
3>toUtf8():返回一个UTF-8编码的8位字符串(UTF-8是ASCII码的超级,它支持整个Unicode 字符集)
4>toLocal8Bit():返回一个系统本地(locale)编码的8位字符串
例如:
QString str = "Welcome to you!"; //初始化一个字符串对象
QByteArray ba=str.toAscii(); //(a)
qDebug()<<ba; //(b)
ba.append("Hello,World!"); //(c)
qDebug()<<ba.data(); //输出最后结果
其中,(a)QByteArray ba=str.toAscii():通过QString::toAscii()函数,将Unicode编码的字符串转换为
ASCII码的字符串,并存储在QByteArray对象ba中
(b)qDebug()<<ba:使用qDebug()函数输出转换后的字符串(qDebug())支持输入的Qt对象
(c)ba.append("Hello,World!"):使用QByteArray::append()函数追加一个字符串
注意:NULL字符串和空(empty)字符串的区别
一个NULL字符串就是使用QString默认构造函数或者使用“(const char*)0”作为参数的构 造函数创建的QString字符串对象;而一个空字符串是一个大小为0的字符串。一个NULL字符 串一定是一个空字符串,而一个空字符串未必是一个NULL字符串。例如:
QString().isNull(); //结果为true
QString().isEmpty(); //结果为true
QString("").isNull(); //结果为true
QString("").isEmpty(); //结果为true
- - - - - - - - 害你加班的bug,就是我写的! - - - - - -
0
今日新帖
0
昨日新帖
35
帖子总数
《我的那些事儿》Episode 1——舒振新
达人专区 2016-07-18 11:42
一大波免费课求包养中 ——未来的平面设计狮,上么?
达人专区 2015-11-23 18:43
校招快报 | 10天5院校,就是这么帅!
达人专区 2015-12-02 18:44
这是一个装8人的社红之路
达人专区 2016-03-03 15:00
业精于勤 || 只要肯努力奋斗,就没有不成功的!
达人专区 2016-03-08 19:18
邢帅你这个大骗子!这几年都耗在这里啦!
达人专区 2016-03-13 17:29
回复:2.1.3 Qt字符串的转换 -- 2017.11.22