0 Pluspunkte 0 Minuspunkte

Wie kann ich 2 Strings vergleichen in C++?

const char *a;

a = "aaa";

if(a == "aaa") {

    //...

} else {

    // ...

}

Das funktioniert aber nicht?

von  

2 Antworten

0 Pluspunkte 0 Minuspunkte

Versuch es mit

if(std::string(a) == "aaa")
von  
0 Pluspunkte 0 Minuspunkte

Der Vergleich von Zeichenketten mit == vergleicht die Adressen im Speicher, nicht den Inhalt der Zeichenketten. Das Verhalten ist von Compiler zu Compiler sowie von Plattform zu Plattform unterschiedlich. Du kannst statt dessen die Funktion strcmp() aus der Headerdatei <cstring> verwenden.

#include <iostream>
#include <cstring> // für strcmp()

int main()
{
    const char *a;

    a = "aaa";
    
    a = "bbb";
    
    if(std::strcmp(a, "aaa") == 0) {
    
        std::cout << "1";
    
    }
    else if(std::strcmp(a, "bbb") == 0) {
    
        std::cout << "2";
    
    } else {
    
        std::cout << "0";
    
    }

    return 0;
}
von (410 Punkte)