Code:
#include <iostream>
#include <string>
using namespace std;
int main() {
string name; // Eine Variable vom Datentyp String
cout << "Bitte Namen eingeben\n";
cin >> name;
cout << "Hallo" << name << endl;
cin.get(); // Erwartet eine Eingabe bevor das Programm geschlossen wird.
return 0;
}
Das Problem damit ist, dass du die Eingabe vom Namen mit Enter abschließt.
Dein inputstream sieht dann so aus "eingegebenerName\n".
In die Variable name kommt aber nur "eingegebenerName", das \n murkst immer noch im buffer rum.
cin.get() findet das \n un dein Programm schließt sich.
Also entweder so:
Code:
int main() {
string name;
cout << "Bitte Namen eingeben: ";
cin >> name;
cout << "Deine name: " << name << endl;
cout << "Press Enter ...";
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.get();
return 0;
}
Oder wenn der String Leerzeichen enthalten soll:
Code:
int main() {
string name;
cout << "Bitte Namen eingeben: ";
getline(cin, name);
cout << "Deine name: " << name << endl;
cout << "Press Enter ...";
cin.get();
return 0;
}
getline() nimmt das \n mit weg, deshalb kannste dir cin.ignore() sparen.
Aber! Wenn du erst cin>>irgendwas; machst und dann getline(), bekommste auch wieder das gleiche Problem. getline() findet das Zeilenende das noch im buffer ist und liest den Rest nicht.
Gibt dann bessere Möglichkeiten mit stringstreams ect., aber Hauptsache du hast es schonma gehört xD.
Das interessant, dann kann ich mir die Variablen wie Bibliotheken vorstellen mit verschiedenen Eigenschaften.
Näh es sind mehr die Operatoren die das Regeln. In dem Fall:
http://www.cplusplus.com/reference/i...perator%3E%3E/
Du kannst die Operatoren auch überladen für eigene Klassen ect..
Aber das wird jetzt zu deep fürn Anfang. Hastes mal gehört.
Leange