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

                            8dd122dc1b834c03e2400232e2f46f3b003.gif

                     - - - - - - - - 害你加班的bug,就是我写的! - - - - - -  



共有2条评论
正序查看
倒序查看
8班-安徽-陈红 2017-11-22 17:50
回复

B_77.gif

10班-深圳-丑丑 2017-11-24 15:39
回复

B_17.gif

回复:2.1.3 Qt字符串的转换 -- 2017.11.22

图片
视频

0

今日新帖

0

昨日新帖

35

帖子总数