У меня есть QString
в моих источниках.
Поэтому мне нужно преобразовать его в целое число без "Kb".
Я пробовал Abcd.toInt()
, но он не работает.
QString Abcd = "123.5 Kb"
У меня есть QString
в моих источниках.
Поэтому мне нужно преобразовать его в целое число без "Kb".
Я пробовал Abcd.toInt()
, но он не работает.
QString Abcd = "123.5 Kb"
У вас нет всех цифр в строке. Итак, вам нужно разделить пространство
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
Строка, содержащаяся здесь, содержит номер с плавающей запятой с единицей. Я бы рекомендовал разделить эту строку на число и единицу с помощью QString::split()
.
Затем используйте 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
В качестве предложения вы также можете использовать 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
}
}
В комментариях:
sscanf(Abcd, "%f %s", &f,&s);
Дает ошибку.
Это правильный путь:
sscanf(Abcd, "%f %s", &f,qPrintable(s));
Используйте .toInt()
для int .toFloat()
для float и .toDouble()
для double