Ergebnis 1 bis 3 von 3

Thema: [C++] char* result; ... if (result[0]=="[") .. ?? Was ist falsch ?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    [C++] char* result; ... if (result[0]=="[") .. ?? Was ist falsch ?

    Jap, die Übersschrift sagt alles. Die Variable ist so definiert:

    Code:
    char* result = NULL; //btw: sie wird nachher mit inhalt gefüllt, also das NULL bleibt nicht
    Wenn ich nun das hier versuche:

    Code:
    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

  2. #2
    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.

  3. #3
    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.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •