Qt-String-Vergleich

Angenommen ich habe:

QString x;

Ist das folgende code-fragment:

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

… funktional äquivalent zu:

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

Könnte ich beweisen, das für mich durch das schreiben ein Recht triviales Programm und es auszuführen, aber ich war überrascht, dass ich nicht finden konnte, die Frage /Antwort hier, so dass ich dachte, ich würde bitten, es zum Wohle der Zukunft mir /anderen.

  • Das ist in Ordnung, aber was hat das QVariant bekam zu tun? Du bist ein QString Instanz, die Tatsache, dass Sie bekam es von QVariant ist ganz gleichgültig hier, weil Sie erhalten, die in beiden Fällen gleich. Ist es auch egal, dass canConvert<QString> gibt true zurück. Sie erhalten Valide Ergebnisse, wenn es den Wert false zurück, auch. Außerdem, warum haben Sie Sorge, was compare gibt? Sie wollen, um Zeichenketten miteinander zu vergleichen, verwenden Sie die operator== es ist, was es ist.
  • du hast Recht, ich habe entfernt die Ablenkungen QVariant
InformationsquelleAutor vicatcu | 2016-09-09



One Reply
  1. 3

    QString::compare wird nur null zurückgeben, wenn der string übergeben werden und der string heißt es auf gleich sind.

    Qstring::operator== gibt true zurück, wenn die strings gleich sind, sonst false.

    Da vergleichen, nur gibt null zurück, wenn die strings gleich sind, dann

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

    Wenn qstrign_variable enthält "text" im obigen Beispiel. Wenn qstrign_variable enthält etwas anderes, dann werden beide Fälle zu false ausgewertet.

    Beachten Sie auch, dass std::string das gleiche Verhalten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.