Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Probleme mit dem String Datentyp

Empfohlene Antworten

Veröffentlicht

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

  • Autor

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

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' );

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.