Stehe vollkommen auf dem Schlauch
-
Ich habe gerade begonnen mich in C++ einzuarbeiten und gleich mal die erste Frage zu folgendem Code:
#include <iostream> using namespace std; int main() { cout << "Bitte gib deinen Namen ein!\n"; char name; cin >> name; cout << "Hallo " << name << "!\n"; return 0; }
Der Code gibt bei mir bei der Ausführung in etwa folgendes aus:
Bitte gib deinen Namen ein!
Simon
Hallo S!
Bitte drücken Sie EINGABE um das Programm zu beendenWieso wird der Name abgeschnitten?
Danke für die Hilfe!
-
Du speichers nur ein einzelnes Zeichen. Mach dir was mit
std::getline
undstd::string
.
-
Danke, so geht's:
#include <iostream> int main() { std::cout << "Bitte gib deinen Namen ein!\n"; std::string name; std::getline (std::cin,name); std::cout << "Hallo " << name << "!\n"; return 0; }
Mir ner normalen Zahl funktioniert das aber doch mit
int var; cin >> var
? Wieso geht es dann mit 'nem String nicht?
-
C-MinusMinus schrieb:
Danke, so geht's:
#include <iostream> int main() { std::cout << "Bitte gib deinen Namen ein!\n"; std::string name; std::getline (std::cin,name); std::cout << "Hallo " << name << "!\n"; return 0; }
Mir ner normalen Zahl funktioniert das aber doch mit
int var; cin >> var
? Wieso geht es dann mit 'nem String nicht?
char = 1 Zeichen, genauso wie int = 1 Zahl. Verstehst du
-
Mit std::string geht es auch - solange du damit zufrieden bist, daß die Eingabe nur bis zum ersten Leerzeichen verarbeitet wird.
-
Wie der Datentyp schon sagt, kann char nur ein Zeichen abspeichern.
Wenn du eine Zeichenkette (eine Abfolge von verschiedenen Zeichen) speichern möchtest funktioniert das wie folgt.#include <iostream> #include <string> // Wird für die Stringfunktion benötigt int main() { std::string name; std::cout << "Bitte Namen eingeben: "; std::cin >> name; std::cout << "Dein Name lautet " << name << std::endl; }
Grüße,
Philipp
-
Der Unterschied zwischen dem Code von C-MinusMinus und Philipp1988 ist der Delimiter.