web-dev-qa-db-ja.com

QStringがすべて数字で構成されているかどうかを検出するにはどうすればよいですか?

QStringが数字だけで構成されているかどうかを判断する最良の方法は何ですか?

QStringライブラリに便利な関数がないようです。

すべてのキャラクターを一度に1つずつ繰り返す必要がありますか、それとも私が考えていなかったよりエレガントな方法がありますか?

16
Wes

次のように、 正規表現 を使用できます。

QRegExp re("\\d*");  // a digit (\d), zero or more times (*)
if (re.exactMatch(somestr))
   qDebug() << "all digits";
27
sth

QString::​toInt あなたが探しているものです。

int QString::​toInt(bool * ok = 0, int base = 10) const

ベースベースを使用してintに変換された文字列を返します。デフォルトは10で、2〜36、または0でなければなりません。変換が失敗した場合は0を返します。変換エラーが発生した場合、* okはfalseに設定されます。それ以外の場合、* okはtrueに設定されます。

例:

QString str = "FF";
bool ok;
int hex = str.toInt(&ok, 16);       // hex == 255, ok == true
int dec = str.toInt(&ok, 10);       // dec == 0, ok == false
22
Alexander

このコードのように、すべての文字を反復処理できます。

QString example = "12345abcd";
for (int i =0;i<example.size();i++)
{
    if (example[i].isDigit()) // to check if it is number!! 
        // do something
    else if (example[i].isLetter()) // to check if it is alphabet !!
        // do something
}
2