Heim >Backend-Entwicklung >C++ >Wie verhindert man Endlosschleifen bei der Verarbeitung fehlerhafter Datentypeingaben in C?
Wie man mit fehlerhaften Datentypeingaben umgeht
In C ist die Behandlung ungültiger Eingaben von entscheidender Bedeutung, um die Programmintegrität aufrechtzuerhalten. Wenn Sie beispielsweise eine Ganzzahl anfordern und auf eine Zeicheneingabe stoßen, sollte das Programm den Fehler ordnungsgemäß behandeln und erneut die richtige Eingabe anfordern. Allerdings kann die Begegnung mit Eingaben eines unerwarteten Typs zu Endlosschleifen führen.
Grund für die Endlosschleife
Die Endlosschleife entsteht, weil das Flag „Bad Input“ des Eingabestreams aktiviert ist Wird gesetzt, wenn die erwartete Eingabe nicht empfangen wird. Das Flag für fehlerhafte Eingaben muss manuell gelöscht und die falsche Eingabe aus dem Stream-Puffer verworfen werden.
Lösung mit Eingabevalidierung
Um die Endlosschleife zu verhindern, verwenden Sie Folgendes Ansatz:
// Loop if input fails (e.g., no characters were read) while (std::cout << "Enter a number" && !(std::cin >> num)) { std::cin.clear(); // Clear the bad input flag std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Discard the input std::cout << "Invalid input; please re-enter.\n"; }
Alternativer Input-Ansatz
Statt Mithilfe der Eingabevalidierung können Sie die Eingabe als Zeichenfolge abrufen und dann versuchen, sie mithilfe von std::stoi oder einer ähnlichen Methode, die Konvertierungsstatusprüfungen bereitstellt, in eine Ganzzahl umzuwandeln.
Das obige ist der detaillierte Inhalt vonWie verhindert man Endlosschleifen bei der Verarbeitung fehlerhafter Datentypeingaben in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!