Problem mit Char



  • Zu der IF sag er:

    Zu viele Zeichen in der Konstante

    Und zur übergabe vom cheat sag er:

    '=' : 'const char *' kann nicht in 'char' konvertiert werden

    Was is das?



  • #include <string>
    
    //...
    
    std::string cheat(CMD_ARGV(0));  
    
        if (cheat == "ab" || cheat == "cd")  
        {  
            printf("OK!\n");  
        }
    

    ein char ist nämlich nur ein einzelnes zeichen, CMD_ARGV(0) gibt aber anscheinend einen const char * (Zeiger) zurück.
    char != const char *
    Den const char * kannst du aber ohne probleme in einen std::string umwandeln, für den es sogar den == operator gibt.



  • Dan giebt er mir sowas nettes zurück:

    Binaerer Operator '==' : 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' definiert
    diesen Operator oder eine Konvertierung in einen fuer den vordefinierten Operator geeigneten Typ nicht



  • Weis den keiner Rat.



  • Zeig mal mehr Quelltext, irgendwie passen die Fehlermeldungen nicht zu dem was du postest ?!



  • #include <string>
    
    /...........
    
    std::string cheat(CMD_ARGV(0)); 
    
    if (cheat == 'say' || cheat == 'say_team')//Alle 3 Fehler hier
    {
    	printf("Willst also was sagen!\n");
    }
    

    Das is alles in dem Zusammenhang.

    Fehler:
    error C2676: Binaerer Operator '==' : 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' definiert diesen Operato
    r oder eine Konvertierung in einen fuer den vordefinierten Operator geeigneten Typ nicht

    error C2015: Zu viele Zeichen in der Konstante

    error C2676: Binaerer Operator '==' : 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' definiert diesen Operato
    r oder eine Konvertierung in einen fuer den vordefinierten Operator geeigneten Typ nicht



  • if ((cheat == "say" )||( cheat == "say_team"))
    


  • Das is doch das selbe in Grün. Das trägt zwar zur übersicht bei mehr aber acuh net.



  • Klaus2k schrieb:

    Das is doch das selbe in Grün. Das trägt zwar zur übersicht bei mehr aber acuh net.

    willst mich verscharschen oder biste nur nen troll ?



  • nein, '' und "" sind nicht dasselbe. '' umschließen ein einzelnes zeichen, also z.b. 'a' oder 'b' oder '\0' (höchstens L'ab' kann möglich sein, aber afaik ist das implementierungsspezifisch- ist aber trotzdem nur ein zeichen).
    "ein text" sind die char 'e' 'i' 'n' ' ' 't' 'e' 'x' 't' und die abschließende '\0', d.h. genauer gesagt ist es ein stringliteral mit typ (const) char *. das const ist in klammer, weil der text nicht veränderbar ist, aber das nicht explizit angegeben werden muss.
    d.h. z.B. bei:

    void foo (char);
    void foo (const char*);
    
    int main () {
       foo ('i'); //hier wird foo(char) aufgerufen
       foo ("i"); //hier wird foo(const char*) aufgerufen
    }
    

Anmelden zum Antworten