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 nichterror 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 }