char kann niet eingeben
-
char* wort = "Wort";
std::cin >> wort;wieso kann ich kein char eingeben?
-
Weil so dein char konstant ist
-
Nimm einen std::string:
std::string word; std::cin >> word;
-
Komisch? Das hier geht irgendwie:
char wort[] = "Wort"; std::cin >> wort;Keine Ahnung warum.
-
ps Warum ist er konstant
?
-
char* test = "Blah"
Du hast einen Zeiger, der auf einen konstanten Text zeigt, daher kannst du nichts mehr ändern.
char test[] = "Blah"
Hier hast du Char-Array was mit 4 Buchstaben initialisiert wird, also eigentlich char[4].
Achtung: Wenn du mehr als 4 Zeichen einliest wird über den reservierten Speicher hinausgeschrieben, egal was sich dort befindet.
-
ZoopaJr schrieb:
char* test = "Blah"
Du hast einen Zeiger, der auf einen konstanten Text zeigt, daher kannst du nichts mehr ändern.
Der Text auf den gezeigt wird, ist konstant, ja, aber das weiß der Compiler nicht, schließlich ist der Zeiger an sich eben nicht const.
edit: Sonst würde ja auch das nicht gehen:
char* test = "Blah"; test[0] = 'x';sehr sehr spätes edit: Damit meine ich, dass das einfach 'nur' keinen Compilerfehler ergibt

-
ZoopaJr schrieb:
... also eigentlich char[4].
char[5] !

-
Badestrand schrieb:
ZoopaJr schrieb:
char* test = "Blah"
Du hast einen Zeiger, der auf einen konstanten Text zeigt, daher kannst du nichts mehr ändern.
Der Text auf den gezeigt wird, ist konstant, ja, aber das weiß der Compiler nicht, schließlich ist der Zeiger an sich eben nicht const.
edit: Sonst würde ja auch das nicht gehen:
char* test = "Blah"; test[0] = 'x';was "gehen" heißt ist relativ

(undefiniertes verhalten)
-
Badestrand schrieb:
edit: Sonst würde ja auch das nicht gehen:
char* test = "Blah"; test[0] = 'x';Ja, der Compiler schluckt's (der würde auch den Code des OP schlucken), aber zur Laufzeit fliegt dir das Programm wahrscheinlich um die Ohren (sowas nennt sich "undefined behaviour").
-
Stimmt!