Zum Inhalt springen

Probleme mit dem String Datentyp


errox

Empfohlene Beiträge

Hallo.

Ich habe zwar ein ziemlich winziges aber auch Verhärendes Problem.

Ich möchte gerne Daten umbennen können, aber mit dem Datentyp String wird nur ein Wort gespeichert.


	string eingabe;

	cin >> eingabe;

	cout << eingabe;

Wenn ich "Hallo" eingebe kommt auch "Hallo" raus. Schön und gut, aber wenn ich "Hallo Ich will umbenannt werden" eingebe, kommt immernoch nur "Hallo" raus.

Das ist zwar eine Kleinigkeit, aber ich verzweifel daran.

Liebe Grüße

errox

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo. Vielen Dank für die Schnelle Antwort, aber das lässt sich nicht so ganz mit einer Vorherigen eingabe kombinieren:


	char entry;

	cout << "<2> Konfiguration erstellen\n";

	cin >> entry;

	else if(entry == '2')

	{

		string name_config;

		string name_art;

		double preis_art;

		bool print_art;

		system("cls");

		cout << version << endl;

		cout << "Bitte geben sie einen Namen der Neuen Konfiguration ein\n";

		getline(cin,name_config);

		system("cls");

		cout << version << endl;

		cout << "Name der Neuen Konfiguration: " << name_config << endl;

Nachdem ich "entry" eingegeben hab, wird automatisch ein Name für die Konfiguration erstellt: "" also wirklich nichts.

Wo liegt das Problem? als char kann ich nicht über Getline definiert werden.

Liebe Grüße

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wo liegt das Problem?
Das Problem ist, dass operator>> und getline grundsätzlich unterschiedlich arbeiten. Der Operator versucht etwas einzulesen, ignoriert dabei Whitespace am Anfang, und bricht ab, sobald etwas eingegeben wird, das nicht "passt". Wenn du also ein int mit >> einliest, bleibt der Zeilenvorschub (die Enter-Taste) in cin stehen. Ein nachfolgender Aufruf von >> bleibt davon unberührt, weil der wie gesagt Whitespace am Anfang ignoriert. Getline tut das aber nicht. Die Funktion liest genau bis zum nächsten Zeilenvorschub. Und weil nach dem Einlesen von entry genau das als nächstes aus cin kommt, liest getline eine leere Zeile ein.

Du kannst das verhindern, indem du zwischen >> und getline alles bis zum nächsten Zeilenvorschub ('\n') aus dem Eingabestrom ausliest und verwirfst:

while( cin.get() != '\n' );

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...