2013-10-09 267 views
18

我有兩個將QString Qt中比較,如何比較兩個Q字符串?

說,

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

我已經嘗試使用,

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

&

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

仍兩種方法都走了進去,如果條件&返回真正。

+0

是的,我已經檢查調試模式相同,令人驚訝地去if條件內。 – krohit

+3

SSCCE如何?特別是,當字符串不相等時,顯示你的函數應該返回什麼。 –

+1

你實際上是指'QString',對吧?請嘗試提供[SSCCE](http://sscce.org/),我們可以將其粘貼到文件中並構建。 – Angew

回答

0

它的工作重建項目後,我覺得這是Qt Creator的問題

+4

這不會回答如何比較兩個QT字符串。這似乎表明你有一些暫時的環境問題。 –

+7

@Maxim它並不意味着你會downvote.I在這裏發佈,因爲我無法弄清Qt的奇怪行爲。但如果通過解決一些與環境相關的問題來解決問題,那麼我有責任讓人們知道這是我的錯,並關閉此主題。 – krohit

28

您可以使用:下面

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

雖然這個問題問如何比較字符串,這不是真正的問題,因爲這個問題已經演示了兩種比較字符串的方法,包括在這個答案中提出的方法。這個問題意味着要問爲什麼比較似乎評估意想不到的結果。在給出的例子中不區分大小寫。 –

+0

第三個參數可以根據您想要比較它們的方式進行更改。我剛剛舉了一個比較字符串的例子。 – mcelik

+1

但是OP已經有兩個如何在他的問題中比較字符串的例子,這兩個例子都是正確的。所以這不是問題。 –

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 

我不知道,爲什麼你的代碼不工作,當本來應該罰款。重新檢查你的代碼的其他部分。