Ergebnis 1 bis 5 von 5

Thema: [C++] Vergleich von const char * und Leerzeichen.

  1. #1
    Shogun Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard [C++] Vergleich von const char * und Leerzeichen.

    Ich geh zu dieser späten Stunde gleich noch die Wände hoch ...
    Also, dreht sich um folgendes.

    Ich lese von einem String immer ein Zeichen in einen const char *.
    Nun will ich vergleichen, ob dieses Zeichen ein Leerzeichen ist.

    Code:
    const char *fieldSign;
      for&#40;short i = 0, iHelp = 0; i < strlen&#40;map.c_str&#40;&#41;&#41; -1; i++&#41;
      &#123;
        fieldSign = map.substr&#40;i, 1&#41;.c_str&#40;&#41;;
    
        // No information
        if&#40;fieldSign == " "&#41;
        &#123;
          cout << "Leerzeichen" << endl;
          iHelp ++;
          continue;
        &#125;
    -> Geht nicht.
    Ok, dacht ich mir, so kannste den Vergleich knicken, muss also irgendwie anders gehen.
    Kommen wir nun zu Google:
    Dort kann man viele nützliche Sachen finden, leider gehen die bei mir alle nicht ...

    /opt/progs/c++/messalla/src/game.h:75: Fehler: ISO-C++ verbietet Vergleich zwischen Zeiger und Ganzzahl
    /opt/progs/c++/messalla/src/game.h:75: Fehler: Typumwandlung von »const char*« nach »int« verliert Genauigkeit
    Kurzum: Hilfe, kann mir jemand sagen, wie ich das nun schaffe?
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Fortgeschrittene/r
    Registriert seit
    26.09.2005
    Ort
    Nürnberg
    Beiträge
    169
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Also ich würde das ein kleinwenig anders machen, um Probleme zu vermeiden:

    1. "strlen(map.c_str())-1" ist das selbe wie "map.size()" und geht schneller
    2. anstatt const char* Variable würde ich ein einfaches char nehmen (du willst sowieso nur ein Zeichen haben) und das mit map[i] belegen

    Damit sollte auch die if Anweisung funktionieren, vorausgesetzt du nutzt die einfachen Anführungszeichen.

    Noch ein Tipp: falls du wirklich mal c-strings vergleichen willst (char*), nimm die Funktion strcmp(...), die ist für solche Zwecke gedacht.

  3. #3
    Shogun
    Themenstarter
    Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    Ok, danke, bin grad in der Schule, werd ich nachher testen.
    Nurnoch eine Frage zu den einfachen Anführungszeichen.
    Meinst du sie -> '.
    Wenn ja, kriege ich da die 1 Fehlermeldung von oben.
    Bei mir wird ' ' als Ganzzahl interpretiert.

    Also, sehe ich mir nachher mal an, vielen Dank schonmal.

  4. #4
    Fortgeschrittene/r
    Registriert seit
    26.09.2005
    Ort
    Nürnberg
    Beiträge
    169
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Naja, ein einfacher Character ist intern auch nichts weiter als ein Integer. Deswegen kann man diese beiden Typen eigentlich problemlos vergleichen.

    Also folgender Code funktioniert bei mir wunderbar:

    Code:
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main&#40;int argc, char* argv&#91;&#93;&#41;
    &#123;
    	string map&#40;"hallo du leerzeiche &#40;3&#41;"&#41;;
    
    	char fieldSign;
    	for&#40;int i=0,iHelp=0; i<map.size&#40;&#41;; ++i&#41;
    	&#123;
    		fieldSign = map&#91;i&#93;;
    		
    		if&#40;fieldSign == ' '&#41; // oder if&#40;fieldSign == 32&#41;
    		&#123;
    			cout << "Leerzeichen" << endl;
    			++iHelp;
    			continue;
    		&#125;
    	&#125;
    
    	return 0;
    &#125;
    PS: ich versteh eigentlich nicht was die Variable iHelp soll, aber wahrscheinlich ist das nicht der ganze Quellcode...

  5. #5
    Shogun
    Themenstarter
    Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    Ok, läuft jetzt problemlos, vielen Dank

Ähnliche Themen

  1. Char-Plugin: wozu?
    Von Mütze im Forum HTML & CSS Forum
    Antworten: 2
    Letzter Beitrag: 19.08.2008, 08:12
  2. GAME CAM vergleich !!!
    Von Fabi im Forum Computer - Internet Forum
    Antworten: 3
    Letzter Beitrag: 25.04.2008, 19:22
  3. vergleich im javascript
    Von azrael im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 5
    Letzter Beitrag: 07.07.2006, 10:55
  4. Vergleich von Zahlen
    Von FaFoo im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 10.04.2006, 20:32
  5. Vergleich auf undefined
    Von Torty im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 01.04.2005, 11:48

Stichworte

Berechtigungen

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