2013-10-09 15 views
18

私は2つのQストリングを比較するには?

はまだ両方の方法があれば内部に行く

if(str1==str2){ 
    return true; 
} 

&

if(str1.compare(str2)==0) 
{ 
    return true; 
} 

、私が使用して試してみました

Qstring str1="1005",str2="1006"; 

、言う、QTで2 Qstringsを比較する必要があります条件&が返されます本当。

+0

に問題だと思うはい、私はデバッグモードで同じことを確認してきたし、驚くべきことには、ifの条件内で行っていました。 – krohit

+3

SSCCEはどうですか?特に、文字列が等しくないときに関数が返すものを示します。 –

+1

あなたは実際に 'QString'を意味します、そうですか? [SSCCE](http://sscce.org/)を提供して、ファイルに貼り付けてビルドしてください。 – Angew

答えて

0

は、私はこれがQT CREATOR

+4

これは、2つのQT文字列を比較する方法には答えていません。あなたが一時的な環境問題を抱えていたようです。 –

+7

@マキシムそれは、あなたがQtの変な振る舞いを理解することができなかったので、私がここに投稿したことを意味しません。しかし、それがいくつかの環境関連の問題を修正することによって解決された場合、それは私の責任であることを人々に知らせ、このスレッドを閉じることを私の責任としています。 – krohit

28

あなたは使用することができます。

int x = QString::compare(str1, str2, Qt::CaseInsensitive); // if strings are equal x should return 0 
+10

質問は文字列を比較する方法を尋ねますが、この答えに示唆されているものを含め、文字列を比較する2つの方法をすでに示しているので、実際には質問しているものではありません。質問は、比較が予期しない結果に評価されるように見える理由を尋ねることを意味します。大文字と小文字の区別は、与えられた例には含まれません。 –

+0

3番目のパラメータは、比較する方法に応じて変更できます。私はちょうど文字列を比較する例を挙げました。 – mcelik

+1

しかし、OPにはすでに彼の質問で文字列を比較する方法の2つの例があります。どちらも正しいです。だからそれは問題ではありません。 –

11

以下のコードは私のために正常に動作します。

int main(int argv, char **args) 
{ 
    QString str1="1005",str2="1006"; 
    if(str1 == str2) 
     qDebug()<<"This should not print"; 
    qDebug()<<"Everything Ok"; 

} 

出力:罰金されている必要がありますされている場合、あなたのコードは、機能しない理由

Everything Ok 

私にはわかりません、。コードの他の部分を再確認してください。これは、プロジェクトを再構築した後に働いた