Подтвердить что ты не робот

Как преобразовать QString в int?

У меня есть QString в моих источниках. Поэтому мне нужно преобразовать его в целое число без "Kb".

Я пробовал Abcd.toInt(), но он не работает.

QString Abcd = "123.5 Kb"
4b9b3361

Ответ 1

У вас нет всех цифр в строке. Итак, вам нужно разделить пространство

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

Ответ 2

Строка, содержащаяся здесь, содержит номер с плавающей запятой с единицей. Я бы рекомендовал разделить эту строку на число и единицу с помощью QString::split().

Затем используйте toDouble(), чтобы получить число с плавающей запятой и округлить по мере необходимости.

Ответ 3

Не забудьте проверить, было ли успешным преобразование!

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

Ответ 4

В качестве предложения вы также можете использовать 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

Ответ 5

В комментариях:

sscanf(Abcd, "%f %s", &f,&s);

Дает ошибку.

Это правильный путь:

sscanf(Abcd, "%f %s", &f,qPrintable(s));

Ответ 6

Используйте .toInt() для int .toFloat() для float и .toDouble() для double

toInt();