(五)QString和数字的转换

1.QString转数字
QString类提供了非常方便的数字类型转换,包括常用的int float double等,也包括不常用的long long等,具体转换如下:

    QString string = "1";
    int int_string = string.toInt();//int类型
    long long_string = string.toLong();//long
    float float_string = string.toFloat();//float
    short short_string = string.toShort();//short
    double double_string = string.toDouble();//double
    qlonglong longlong_string = string.toLongLong();//long long int, 即__int64 64位有符号int
    unsigned int unint_string = string.toUInt();//无符号int

只需要一行代码就可以转换完成,是非常方便的。但是注意:QT是有坑的,一不小心,你就掉进去出不来了,例如,QString如果是“1.0.1”,那么结果如何呢?
在这里插入图片描述
看到了吗?除了double、float,其他的转换全部变成0了,toInt、toLong、toShort、toLongLong、toUInt要求的都是整型,也就是变量需要是0-9之间,有其他字符都会导致转换失败。所以如果你对需要转换的数据类型不了解,请务必使用下面的方式:

    QString string = "1.01";
    bool ok;
    int int_string = string.toInt(&ok);//int类型
    if(!ok)
    {
        printf("数据转换失败,原始类型非整型");
    }

2.数字转QString
数字转QString就比较简单了,QString对number函数进行了重载,会根据你传入的数据类型自动选择函数:

double num = 1.24;
QString string_num = QString::number(num);

QT提供的转换如下:
在这里插入图片描述

这样操作,可以得到一个按照10进制转换的QString。如果你想转换8进制或者10进制,那么你要保证传入的参数是整型,否则QT会报错:

int num = 1;
QString string_num = QString::number(num,8);

其实QT还提供了一个函数setNum(),这个函数在功能上和number并没有区别,都可以转换数字为QString,区别是setNum返回的是一个QString类型的引用,而不是一个QString:

    int num = 1;
    QString string_num;
    string_num.setNum(num);
  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值