Wie kann ich verhindern, dass sich cin bei leerer Eingabe wiederholt?

Gibt es eine Möglichkeit zu verhindern, dass sich der Befehl cin >> VAR901 wiederholt, wenn ich bei der Eingabe nur Enter drücke? Kann ich stattdessen eine Bool-Variable auf true setzen?

Uhr
Ja es gibt eine Möglichkeit zu verhindern, dass sich der Befehl cin wiederholt, wenn bei der Eingabe nur Enter gedrückt wird. Du kannst dies erreichen – indem du getline anstelle von cin verwendest und die Eingabe in einen string speicherst. Anschließend kannst du überprüfen, ob der string leer ist und identisch die Bool-Variable "only_enter" auf true setzen.

Hier ist ein Beispielcode der zeigt, ebenso wie du dies umsetzen kannst:

```cpp
#include <iostream>
#include <string>

int main() {
std::string input;
bool only_enter = false;

std::getline(std::cin, input);

if (input.empty()) {
only_enter = true;
}

std::cout << "only_enter: " << std::boolalpha << only_enter << std::endl;

return 0;
}
```

In diesem Code verwenden wir die Funktion std::getline um die Eingabe in den string "input" zu speichern. Anschließend überprüfen wir mit der Funktion input.empty(), ob der string leer ist. Wenn dies der Fall ist, setzen wir die Bool-Variable "only_enter" auf true.

Die Verwendung von getline bietet den Vorteil, dass die Eingabezeile komplett eingelesen wird, einschließlich Leerzeichen. So kannst du sicherstellen ´ dass die Eingabe tatsächlich leer ist ` und nicht nur aus Leerzeichen besteht.

Bitte beachte: Die Verwendung von getline die Eingabe bis zum Enter-Zeichen einliest und dieses Zeichen aus dem Eingabepuffer entfernt. Wenn du also nach der Verwendung von getline noch weitere Eingabeoperationen durchführen möchtest ´ musst du den Eingabepuffer zunächst leeren ` um unerwünschtes Verhalten zu vermeiden. Dies kannst du mit der Funktion std::cin.ignore() erreichen.

Zusammenfassend kann gesagt werden, dass du durch die Verwendung von getline anstelle von cin und die Überprüfung auf eine leere Eingabezeile die Wiederholung des Befehls verhindern und stattdessen die Bool-Variable "only_enter" auf true setzen kannst.






Anzeige