C-Strings checken
-
Hallo,
Ich versuche grade einen C-String gegen einen String zu checken, doch es möchte nicht funtkionieren:
char cstring[] = "Hallo"; if (cstring == "Hallo") { cout << "Hallo" << endl; } else { cout << "Nicht Hallo" << endl; }Gibt leider "Nicht Hallo" aus!
Bin für jeden Tipp sehr dankbar!
-
Überleg dir mal GENAU was cstring ist, dann weisst du nämlich was du da eigentlich vergleichst.

-
Omg bin ich dumm...
Also vergleiche ich bloss den ersten char mit meinem String?
Falls ja, muss ich durch den String loopen und die einzelnen Zeichen vergleichen, oder gibts einen besseren Weg?
-
Huhu,
dafür gibt es eine Funktion:
#include <cstring> if ( strcmp ( cstring, hallo ) == 0 ) { // DoSomething(); } else { std::cout << "Ungleich!" << std::endl; }€dit: Danke unskilled

-
C-String gegen einen String zu checken
du vergleichst 2 c-strings miteinanderAlso vergleiche ich bloss den ersten char mit meinem String?
Nein... Kleiner Tip:
int a, b; int *A = &a; int *B = &b; if(A == B) std::cout << "huch?" << std::endl;wirds jetzt klarer, was verglichen wird?
Huhu,
dafür gibt es eine Funktion:
#include <cstring> if ( strcmp ( cstring, "Hallo" ) { // DoSomething(); } else { std::cout << "Ungleich!" << std::endl; }falsch rum und ne klammer fehlt auch

bb
-
C-String schrieb:
...Also vergleiche ich bloss den ersten char mit meinem String?...
Nein, du vergleichst die Speicheradresse des ersten Zeichens aus dem Array cstring mit der Speicheradresse des ersten Zeichens des Literals "Hallo", wo immer das auch abgelegt wurde.
-
Ahh, die Adresse!
Dankeschön ihr beiden

-
Achja, ausserdem muss bei strcmp() gegen 0 gecheckt werden

-
C-String schrieb:
Achja, ausserdem muss bei strcmp() gegen 0 gecheckt werden

Das geht auch implizit, obwohl ich das nicht schön finde. Man müsste es halt richtig rum machen (bei Gleichheit ist der Rückgabewert 0).

Aber gibt es einen Grund, wieso du nicht
std::string()verwendest? Dann kannst du auchoperator==ganz intuitiv einsetzen, auch andere Funktionen sind viel komfortabler.