精华内容
下载资源
问答
  • Qt中QString转int,float

    千次阅读 2015-08-12 17:47:48
    环境:linux下Qt 错误案例: QString s = "2.3";...在此linux Qt下不能将带小数的字符串直接转为int型,只能按相应格式转化。 正确案例: QString s1 = "5"; int n; n = s.toInt(); cout QString s2 = "2.6"; float

    环境:linux下Qt

    错误案例:

    QString s = "2.3";
    int n;
    n = s.toInt();
    cout << n <<endl;

    结果:

    0
    结论:

    在linux Qt下不能将带小数的字符串直接转为int型,只能按相应格式转化。

    正确案例:

    QString s1 = "5";
    int n;
    n = s.toInt();
    cout << n << endl;

    QString s2 = "2.6";
    float f;
    f = s2.toFloat();
    cout << f <<endl;

    结果:

    5
    2.6


    展开全文
  • Qt中QString,int,char,QByteArray之间相互转换 int 转 QString int m=1; QString b; b=QString::number(m) QString 转int QString a="1111" int b; b=a.toInt() char ...
    
    
    Qt中QString,int,char,QByteArray之间相互转换

    int  转 QString
    int m=1;
    QString b;
    b=QString::number(m)

    QString 转int
    QString a="1111"
    int b;
    b=a.toInt()

    char 转换为 QString
    char a='b';
    QString str;
    str=QString(a);

    QString 转换为 char
    QString str="qq";
    char *ch;
    ch = str.toLatin1.data();

    1.QStringchar *
    先将QString转换为QByteArray,再将QByteArray转换为char *
    注意:不能用下面的转换形式char *mm = str.toLatin1().data();。因为这样的话,str.toLatin1()得到的QByteArray类型结果就不能保存,最后转换,mm的值就为空。
     
    2. char * QString
    可以使用QString的构造函数进行转换:QString(const QLatin1String &str);
    QLatin1String的构造函数:QLatin1String(const char *str);
    则如下语句是将char * mm转换为QString str
    str = QString(QLatin1String(mm));

    char * 与 const char *的转换
    char *ch1="tt";
    const char *ch2="qq";
    ch2 = ch1;//不报错,但有警告
    ch1 = (char *)ch2;

    QByteArray 转换为 char *
    char *ch;//不要定义成ch[n];
    QByteArray byte;
    ch = byte.data();

    char * 转换为  QByteArray
    char *ch;
    QByteArray byte;
    byte = QByteArray(ch);

    QString 转换为  QByteArray
    QByteArray byte;
    QString string;
    byte = string.toAscii();

    QString s("hello");
    QByteArray cstr = s.toAscii();
    QString s("hello");
    QByteArray cstr = s.toLatin1();

    QByteArray 转换为  QString
    QByteArray byte;
    QString string;
    string = QString(byte);
    示例:
    qDebug()<<"qq";
    qDebug()<<tr("tt");
    qDebug()<<ch;(ch 为char类型)
    qDebug()<<tr(ch);
    qDebug()<<byteArray;(byteArray是QByteArray类型)
    qDebug()<<tr(byteArray);
    qDebug()<<str;(str 为Qstring类型)
    但是qDebug()<<tr(str);是不可以的,要想用tr()函数输出QString类型的字符则要如下:
    qDebug()<<tr(str.toLatin1);
    QString 转换为 string
    QString s2q(const string &s)
    {
         return QString(QString::fromLocal8Bit(s.c_str()));
    }

    string q2s(const QString &s)
    {
         return string((const char *)s.toLocal8Bit());
    }

    1. 将QString类型转化为float类型,很简单

    QString data;
    float num = data.toFloat();

        即可很轻松的实现。
    2. 但是如何将float类型转化为QString类型呢?
        查看API很难发现封装好的转化函数
        可以尝试使用下面的代码转化:
    float num = 1.222;
    QString data = QString("float is %1").arg(num);

        输出结果是:float is 1.222

        如果只要float转化成的数值,则使用如下:

        QString data = QString("%1").arg(num);

    Hex转QString
    方法一:
    QString key;
    key =  QString("%1").arg(k,4,16,QLatin1Char('0'));//k为int型或char型都可

    方法二:
    char chBuf[20];
    sprintf(chBuf,"%02x",k);
    key = QString::fromUtf8(chBuf);
    或 key = QString(QLatin1String(chBuf));

    不用补0将10进制转成16进制字符串
    key = QString::number(k, 16);

    Qstring 转换char*问题
    QString qstr("hello,word");
    const char * p = qstr.toLocal8Bit().data();
    const char *p = qstr.toStdString().data();

    QString 转 Hex
    char ConvertHexChar(char ch)
    {
        if((ch >= '0') && (ch <= '9'))
            return ch-0x30;
        else if((ch >= 'A') && (ch <= 'F'))
            return ch-'A'+10;
        else if((ch >= 'a') && (ch <= 'f'))
            return ch-'a'+10;
        else return (-1);
    }

    void String2Hex(QString str, QByteArray &senddata)
    {
        int hexdata,lowhexdata;
        int hexdatalen = 0;
        int len = str.length();
        senddata.resize(len/2);
        char lstr,hstr;
        for(int i=0; i<len; )
        {
            //char lstr,
            hstr=str[i].toLatin1();
            i++;
            if(hstr == ' ')
            {
                continue;
            }
            if(i > len)
                break;
            lstr = str[i].toLatin1();
            hexdata = ConvertHexChar(hstr);
            lowhexdata = ConvertHexChar(lstr);
            if((hexdata == 16) || (lowhexdata == 16))
                break;
            else if(lowhexdata == -1)
                hexdata = hexdata;
            else
                hexdata = hexdata*16+lowhexdata;
            i++;
            senddata[hexdatalen] = (char)hexdata;
            hexdatalen++;
        }
        senddata.resize(hexdatalen);
    }
    展开全文
  • Qt中QStringint,char等相互转换

    千次阅读 2017-11-10 15:04:43
    网上找了半天,全是QString转int和char等的,就没有int转QString的,但是还是找到啦,我来整合一下哦~ Qt中 int ,float ,double转换为QString 有两种方法 1.使用 QString::number(); 如: [cpp] view...

    网上找了半天,全是QString转int和char等的,就没有int转QString的,但是还是找到啦,我来整合一下哦~


    Qt中 int ,float ,double转换为QString

    有两种方法

    1.使用

    QString::number();

    如:

    [cpp] view plain copy
    1. long a = 63;  
    2. QString s = QString::number(a, 10);             // s == "63"  
    3. QString t = QString::number(a, 16).toUpper();     // t == "3F"  
    (解释,变量a为int型或者float,double。10和16为进制) toUpper是大写

    2.使用

    [cpp] view plain copy
    1. long a = 63;  
    2. QString s = QString("%1").arg(a);  
    这个嘛,我不常用


    把QString转换为 double类型

    方法1.

    [cpp] view plain copy
    1. QString str="123.45";  
    2. double val=str.toDouble(); //val=123.45  


    方法2.很适合科学计数法形式转换

    [cpp] view plain copy
    1. bool ok;  
    2. double d;  
    3. d=QString("1234.56e-02").toDouble(&ok); //ok=true;d;12.3456.  


     

    把QString转换为float形

    1.

    [cpp] view plain copy
    1. QString str="123.45";  
    2. float d=str.toFloat(); //d=123.45  

    2.

    [html] view plain copy
    1. QString str="R2D2";  
    2. bool ok;  
    3. float d=str.toFloat(&ok); //转换是被时返回0.0,ok=false;  

    把QString形转换为整形

    1.转换为十进制整形

    注意:基数默认为10。当基数为10时,并且基数必须在2到36之

    间。如果基数为0,若字符串是以0x开头的就会转换为16进制,若以0开头就转换为八进制,否则就转换为十进制。

    [cpp] view plain copy
    1. Qstring str="FF";  
    2. bool ok;  
    3. int dec=str.toInt(&ok,10); //dec=255 ; ok=rue  
    4. int hex =str.toInt(&ok,16); //hex=255;ok=true;  


    3.常整形转换为Qstring形

    [cpp] view plain copy
    1. long a =63;  
    2. QString str=QString::number(a,16); //str="3f";  
    3. QString str=QString::number(a,16).toUpper(); //str="3F";  


    Qstring 转换char*问题!

    方法一:

    [cpp] view plain copy
    1. QString qstr("hello,word");  
    2. const char * p = qstr.toLocal8Bit().data();  


    方法二:
    [cpp] view plain copy
    1. const char *p = qstr.toStdString().data();  


    转换过来的是常量

    把当前时间转化为QString...

    public QDateTime qdate = QDateTime.currentDateTime();
    datetime = qdate.toString("yyyy年MM月dd日ddddhh:mm:ss");
    如果不是QTime和QDate类比如说:通过TCP/IP接收到的char unsigned char 类等如何转换为QString类
    QString Time2String( DWORD dwTime)
    {
    char cTime[50] = {0};
    memset(cTime,0,50);
    strftime(cTime,32,"%Y-%m-%d %H:%M:%S",localtime(&time_t(dwTime)));
    return QString(cTime);
    }


    可能在传递参数的过程中, 传的一是个bool值,而后面,在参数的转换传递过程中,只能传一个QString, 最后又需要得到一个bool值,这时就可以使用这种方法:


    bool testParam;

    QString tempParam = QString::number(testParam);

    //上面是bool 转QString;


    QVariant tempValue = tempParam;

    bool tempFinished = tempValue.toBool();

    //这样就把QString 类型的转换回去了。


    展开全文
  • Qt中 QString 和int, ...网上找了半天,全是QString转int和char等的,就没有int转QString的,但是还是找到啦,我来整合一下哦~ Qt中 int ,float ,double转换为QString 有两种方法 1.使用 QString::numb

    Qt中 QString 和int, char等的“相互”转换


    目录(?)[+]

    网上找了半天,全是QString转int和char等的,就没有int转QString的,但是还是找到啦,我来整合一下哦~


    Qt中 int ,float ,double转换为QString

    有两种方法

    1.使用

    QString::number();

    如:

    1. long a = 63;  
    2. QString s = QString::number(a, 10);             // s == "63"  
    3. QString t = QString::number(a, 16).toUpper();     // t == "3F"  
    (解释,变量a为int型或者float,double。10和16为进制) toUpper是大写

    2.使用

    1. long a = 63;  
    2. QString s = QString("%1").arg(a);  
    这个嘛,我不常用


    把QString转换为 double类型

    方法1.

    1. QString str="123.45";  
    2. double val=str.toDouble(); //val=123.45  


    方法2.很适合科学计数法形式转换

    1. bool ok;  
    2. double d;  
    3. d=QString("1234.56e-02").toDouble(&ok); //ok=true;d;12.3456.  


     

    把QString转换为float形

    1.

    1. QString str="123.45";  
    2. float d=str.toFloat(); //d=123.45  

    2.

    1. QString str="R2D2";  
    2. bool ok;  
    3. float d=str.toFloat(&ok); //转换是被时返回0.0,ok=false;  

    把QString形转换为整形

    1.转换为十进制整形

    注意:基数默认为10。当基数为10时,并且基数必须在2到36之

    间。如果基数为0,若字符串是以0x开头的就会转换为16进制,若以0开头就转换为八进制,否则就转换为十进制。

    1. Qstring str="FF";  
    2. bool ok;  
    3. int dec=str.toInt(&ok,10); //dec=255 ; ok=rue  
    4. int hex =str.toInt(&ok,16); //hex=255;ok=true;  


    3.常整形转换为Qstring形

    1. long a =63;  
    2. QString str=QString::number(a,16); //str="3f";  
    3. QString str=QString::number(a,16).toUpper(); //str="3F";  


    Qstring 转换char*问题!

    方法一:

    1. QString qstr("hello,word");  
    2. const char * p = qstr.toLocal8Bit().data();  


    方法二:
    1. const char *p = qstr.toStdString().data();  


    转换过来的是常量

    把当前时间转化为QString...

    public QDateTime qdate = QDateTime.currentDateTime();
    datetime = qdate.toString("yyyy年MM月dd日ddddhh:mm:ss");
    如果不是QTime和QDate类比如说:通过TCP/IP接收到的char unsigned char 类等如何转换为QString类
    QString Time2String( DWORD dwTime)
    {
    char cTime[50] = {0};
    memset(cTime,0,50);
    strftime(cTime,32,"%Y-%m-%d %H:%M:%S",localtime(&time_t(dwTime)));
    return QString(cTime);
    }

    展开全文
  • Qt中QStringint,char等互

    万次阅读 多人点赞 2017-03-03 16:22:20
    QString::toInt()函数将字符串转换为整型数值,类似的函数还有toDouble()、toFloat()、toLong()、toLongLong(); 1、 int, float , double类型 转换为QString 有两种方法: A...
  • Qt中 int ,float ,double转换为QString 有两种方法 1.使用 QString::number(); 如: long a = 63; QString s = QString::number(a, 10); // s == "63" QString t = QString::number(a, 16).toUpper(); // t ...
  • QT中QString ,int ,char*互相转换的问题       QString转int QString str; int type = str.toInt();   int转QString int type; QString str = QString::number(type,10);   QString转float ...
  • Qt中 int ,float ,double转换为QString 有两种方法 1.使用 QString::number(); 如: long a = 63; QString s = QString::number(a, 10); // s == “63” QString t = QString::number(a, 16).toUpper(); // t == “3....
  • 1. QString to char* QString qstr = "hello";...使用c语言写的客户端,使用Qt写的服务器,还使用到了c 的fork()函数。2. char* to QString char* c_char = "world"; QString qstr = QString(QLati

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 359
精华内容 143
关键字:

qt中qstring转int