Vergleichen von zwei char * für die Gleichheit [duplizieren]

8

Meine Spielkondition funktioniert nicht! Kann jemand beraten, wie man mit C-artigen Zeichenfolgen vergleicht?

%Vor%

Auch wenn temp und data übereinstimmen, funktioniert die folgende Bedingung nicht:

%Vor%

Nicht sicher, ob das hilft. Die Funktion SaveData() wird von der folgenden Funktion aufgerufen:

%Vor%     
Bryan Wong 25.11.2012, 07:56
quelle

3 Antworten

14

Da sowohl stpr als auch data C-Zeichenfolgen sind, müssen Sie strcmp() verwenden:

%Vor%     
NPE 25.11.2012 07:58
quelle
5

Diese Bedingung funktioniert nicht, weil der Operator == nicht für char* überladen ist.

%Vor%

Verwenden Sie dies stattdessen.

%Vor%

strcmp() gibt 0 zurück, wenn beide cstrings gleich sind. Stellen Sie sicher, dass beide Cstrings, die Sie zuordnen, einen legalen Speicher enthalten und am Ende null sind.

Bearbeiten:

Um jegliche Art von Ärger und Fehlern zu vermeiden, ist es ratsam, rohe char* nicht zu verwenden und stattdessen std::string zu verwenden. Also mach besser Strings und vergleiche sie.

%Vor%

Dieser Ansatz würde Ihnen viele Probleme ersparen.

    
Coding Mash 25.11.2012 07:59
quelle
2

Sie versuchen, zwei char * zu vergleichen. Sie können versuchen, strcmp(stpr, data) zum Überprüfen der Bedingungen zu verwenden.

Besser verwenden Sie es wie

%Vor%     
Rahul Tripathi 25.11.2012 08:00
quelle

Tags und Links