2013-10-09 18 views
18

devo confrontare due Qstrings in qt,Come confrontare due Qstrings?

dire,

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

Ho provato utilizzando,

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

&

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

ancora entrambi i metodi va dall'interno se condizioni & resi vero.

+0

Sì, ho controllato lo stesso in modalità di debug e sorprendentemente stava andando all'interno del se la condizione. – krohit

+3

Che ne dici di un SSCCE? In particolare, mostra ciò che la tua funzione dovrebbe restituire quando le stringhe non sono uguali. –

+1

In realtà si intende 'QString', giusto? Si prega di provare a fornire un [SSCCE] (http://sscce.org/) potremmo semplicemente incollare in un file e costruire. – Angew

risposta

0

ha funzionato dopo la ricostruzione del progetto, penso che questo è il problema con Qt Creator

+4

Questo non risponde come confrontare due stringhe QT. Sembra che tu abbia avuto alcuni problemi ambientali temporanei. –

+7

@Maxim Non vuol dire che avrò un downvote. Ho postato qui perché non ero in grado di capire il comportamento strano di Qt. Ma se è stato risolto risolvendo alcuni problemi relativi all'ambiente, è mia responsabilità far sapere alla gente che è stata colpa mia e chiudere questo thread. – krohit

28

È possibile utilizzare:

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

Sebbene la domanda chieda come confrontare le stringhe, non è * veramente * quello che chiede, poiché la domanda dimostra già due modi di confrontare le stringhe, inclusa quella suggerita in questa risposta. La domanda significa chiedere perché i confronti sembrano valutare risultati inaspettati. La distinzione tra maiuscole e minuscole non è coinvolta nell'esempio fornito. –

+0

Il terzo parametro può essere modificato in base a come si desidera confrontarli. Ho appena fatto un esempio di confronto di stringhe. – mcelik

+1

Ma l'OP ha già due esempi di come confrontare le stringhe nella sua domanda, entrambe corrette. Quindi non è questo il problema. –

11

Il seguente codice funziona bene per me.

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

} 

uscita:

Everything Ok 

Non so, perché il codice non funziona, quando si dovrebbe avere stato bene. Ricontrolla altre parti del tuo codice.