(五)QString和数字的转换

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

    QString string = "1";int int_string = string.toInt();//int类型long long_string = string.toLong();//longfloat float_string = string.toFloat();//floatshort short_string = string.toShort();//shortdouble double_string = string.toDouble();//doubleqlonglong longlong_string = string.toLongLong();//long long int, 即__int64 64位有符号intunsigned 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);


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部