该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
QString与数字之间的转换:
1. QString转数字1.1 QString --> int
intQString::toInt(bool * ok = 0, int base = 10) const
转换发生错误,或者转换不成功ok为false;发生错误时,返回值为0。base为转换进制
该方法有很大的局限性,要转换的字符串中只能有0-9的字符组成,如果含有其他字符,转换将会失败
1.2 QString --> double
doubleQString::toDouble(bool * ok = 0) const
转换发生错误,或者转换不成功ok为false;发生错误时,返回值为0.0。
支持将科学计数法转成double,不支持处理千组分隔符。
1.3 QString --> float
floatQString::toFloat(bool * ok = 0) const
转换发生错误,或者转换不成功ok为false;发生错误时,返回值为0.0。
1.4 例子:
QString str = "11.55";
bool ok;
int a = str.toInt(&ok);
//当str出现除了0-9这些数字的其他符号(不包括" - "),将会转换失败,即只支持整数的转换
//str = "11" true
//str = "-11" true
qDebug() << ok << " a=" << a; //false a = 0
double b = str.toDouble(&ok);
qDebug() << ok << " b=" << b; //true b = 11.55
float c = str.toFloat(&ok);
qDebug() << ok << " c=" << c; //true c = 11.55
2. 数字转QString
下面介绍的转换成QString是用了同一个函数不同的重载而已。
2.1 int --> QString
QStringQString::number(int n, int base = 10) [static]
n为需要转换的数字,base转换进制
2.2 double/folat --> QString
QStringQString::number(double n, char format = ‘g’, int precision = 6) [static]
n为需要转换的数字;format格式,根据指定的格式和精度进行格式化;precision 精度,默认精度为6
2.3 setNum() 有多个重载
QString &QString::setNum(int n, int base = 10)
将n以base进制转为QString
2.3 例子:
int a = 123;
double b = 123.456;
float c = 465.12;
QString strA = QString::number(a);
qDebug() << "strA = "<< strA; //strA = "123"
QString strB = QString::number(b);
qDebug() << "strB = "<< strB; //strB = "123.456"
QString strC = QString::number(c);
qDebug() << "strC = "<< strC; //strC = "465.12"
QString strD;
strD.setNum(a); //strD = "123"