web-dev-qa-db-ja.com

QStringをintに変換する方法は?

ソースにQStringがあります。したがって、整数に変換する必要があります「Kb」なし

Abcd.toInt()を試しましたが、機能しません。

QString Abcd = "123.5 Kb"
54
user2398614

文字列にすべての数字が含まれているわけではありません。だから、スペースで分割する必要があります

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

更新:古い回答を更新しています。これは、特定の質問に対する直接的な答えであり、厳密な仮定がありました。ただし、@ DomTomCatのコメントおよび@Mikhailの回答に記載されているように、一般に、操作が成功したかどうかを常に確認する必要があります。そのため、ブールフラグを使用する必要があります。

bool flag;
double v = Abcd.split(" ")[0].toDouble(&flag); 
if(flag){
  // use v
}

また、ユーザー入力としてその文字列を使用している場合、文字列が実際にスペースで分割可能かどうかについても疑う必要があります。仮定が破れる可能性がある場合は、正規表現検証がより望ましいです。次のような正規表現は、浮動小数点値と「b」のプレフィックス文字を抽出します。その後、キャプチャされた文字列を安全にdoubleに変換できます。

([0-9]*\.?[0-9]+)\s+(\w[bB])

次のようなユーティリティ機能を使用できます

QPair<double, QString> split_size_str(const QString& str){
    QRegExp regex("([0-9]*\\.?[0-9]+)\\s+(\\w[bB])");
    int pos = regex.indexIn(str);
    QStringList captures = regex.capturedTexts();
    if(captures.count() > 1){
        double value = captures[1].toDouble(); // should succeed as regex matched
        QString unit = captures[2]; // should succeed as regex matched
        return qMakePair(value, unit);
    }
    return qMakePair(0.0f, QString());
}
82
Neel Basu

変換が成功したかどうかを確認することを忘れないでください!

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
8
Mikhail

ここにある文字列には、単位付きの浮動小数点数が含まれています。 QString::split()を使用して、その文字列を数字と単位部分に分割することをお勧めします。

次に、toDouble()を使用して浮動小数点数を取得し、必要に応じて丸めます。

8
confusopoly

Intには.toInt()を使用し、floatには.toFloat()を、doubleには.toDouble()を使用します

toInt();

3
Samuel Ives

次を使用できます。

QString str = "10";
int n = str.toInt();

出力:

n = 10
1
Jaziri Rami

提案として、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への1つの要素の変換

1
Angie Quijano