QString
が数字だけで構成されているかどうかを判断する最良の方法は何ですか?
QString
ライブラリに便利な関数がないようです。
すべてのキャラクターを一度に1つずつ繰り返す必要がありますか、それとも私が考えていなかったよりエレガントな方法がありますか?
次のように、 正規表現 を使用できます。
QRegExp re("\\d*"); // a digit (\d), zero or more times (*)
if (re.exactMatch(somestr))
qDebug() << "all digits";
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
このコードのように、すべての文字を反復処理できます。
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
}