2016-09-09 39 views
0

私が持っていると仮定します。Qtの文字列比較

QString x; 

は、次のコードです:

if(x.compare("abcdefg") == 0){ 
    doSomething(); 
} 
else{ 
    doSomethingElse(); 
} 

...と機能的に同等:

if(x == "abcdefg"){ 
    doSomething(); 
} 
else{ 
    doSomethingElse(); 
} 

私は自分自身のためにこれを証明することができかなり簡単なプログラムを書いて実行することで、私はここで質問/答えを見つけることができなかったことに驚いたので、私は将来の私/他の酒。

+1

?あなたは 'QString'インスタンス上で動作していますが、' QVariant'から取得したという事実は、どちらの場合も同じ方法で取得するため、ここでは重要ではありません。 'canConvert 'がtrueを返しても問題ありません。 falseを返すと、有効な結果が得られます。それに、なぜ「比較する」ものが返ってくるのか、どうして気にしますか?文字列を比較したい場合は、 'operator =='を使用してください。 –

+0

@KubaOberあなたが正しいです、私はQVariantの気晴らしを削除しました – vicatcu

答えて

2

QString::compareは、渡された文字列とそれが呼び出された文字列が等しい場合にのみ0を返します。

Qstring::operator==は、文字列が等しい場合はtrue、そうでない場合はfalseを返します。

以来はqstrign_variable上記の例で"text"が含まれる場合、文字列は、次に

(qstrign_variable.compare("text") == 0) == (qstrign_variable == "text") 

等しい場合のみゼロを返す比較します。 qstrign_variableに何かが含まれている場合、両方のケースはfalseと評価されます。

も注意して大丈夫ですが、 `QVariant`は何もして行うようになっているものstd::stringhas the same behavior