如何将QString转换为int?
我有一个QString
在我的来源。 所以我需要将其转换为不带“Kb”的整数。
我试过Abcd.toInt()
但它不起作用。
QString Abcd = "123.5 Kb"
您的string中没有全部数字字符。 所以你必须分开空间
QString Abcd = "123.5 Kb"; Abcd.split(" ")[0].toInt(); //convert the first part to Int Abcd.split(" ")[0].toDouble(); //convert the first part to double Abcd.split(" ")[0].toFloat(); //convert the first part to float
你在这里的string包含一个单位的浮点数。 我build议使用QString::split()
将该string拆分成数字和单位部分。
然后使用toDouble()
来获得一个浮点数,并且可以随心所欲。
不要忘记检查转换是否成功!
bool ok; auto str= tr("1337"); str.toDouble(&ok); // returns 1337.0, ok set to true auto strr= tr("LEET"); strr.toDouble(&ok); // returns 0.0, ok set to false
作为build议,您也可以使用QChar::digitValue()
来获取数字的数字值。 例如:
for (int var = 0; var < myString.length(); ++var) { bool ok; if (myString.at(var).isDigit()){ int digit = myString.at(var).digitValue(); //DO SOMETHING HERE WITH THE DIGIT } }
来源: 将一个元素从一个QString转换为int
使用.toInt()
为int .toFloat()
为float, .toDouble()
为double
toInt();
关于评论:
sscanf(Abcd, "%f %s", &f,&s);
给出一个错误。
这是正确的方法:
sscanf(Abcd, "%f %s", &f,qPrintable(s));