Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] char* result; ... if (result[0]=="[") .. ?? Was ist falsch ?



Crash-Override
07.07.2005, 18:43
Jap, die Übersschrift sagt alles. Die Variable ist so definiert:



char* result = NULL; //btw: sie wird nachher mit inhalt gefüllt, also das NULL bleibt nicht


Wenn ich nun das hier versuche:



if(result[0] == "[")
{
[...]
}


meckert g++ bei der if-Zeile mit

burn.cpp:38: error: ISO C++ forbids comparison between pointer and integer

Versteh ich nicht :rolleyes:

Dingsi
07.07.2005, 18:52
Ganz einfach, hab ich früher auch oft falsch gemacht.

result[0] ist ein char/8-bit-integer.
"[" ist ein char-Pointer.

Das was du willst ist '[', was ein char ist.

Ynnus
07.07.2005, 19:27
Mit etwas anderen Worten gesagt, fügst du einen Zeichenkette (oder ein einzelnes Zeichen) zwischen Anführungszeichen ein, dann wird es vom Compiler wie ein Array von Zeichen behandelt. Selbst wenn es nur ein Buchstabe ist, wird durch das "" am Ende des Buchstabens eine 0 eingefügt, der Null-Terminator, der das Ende der Zeichenkette kennzeichnet. Daher sind es dann schon 2 Zeichen. In jedem Fall aber wird eine Zeichenkette als Pointer zum ersten Zeichen gehandhabt, und diesen Pointer kannst du nicht mit einem einzelnen char-Wert vergleichen.
Einzelne Char-Werte werden, wie Dingsi schon sagte, mittels Hochkomma dargestellt: ']'.
Der Compiler wandelt diesen Buchstaben dann intern in die entsprechenden ASCII-Zeichen um, denn auch eine Char-Variable speichert ja nur Zahlen und nur für den User sieht es aus, als würde sie Buchstaben speichern.