如何将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));