Das Problem, das Sie beschrieben haben hier:
while (cin.fail())
{
cout << "Re-enter a valid value! ";
}
Es sieht aus wie Sie nicht vollständig Versteh, was hier passiert, also werde ich das für dich abbrechen.
Der Code übersetzt etwa so:
„Während cin.fail() wahr ist, Ausgang“ einen gültigen Wert erneut eingeben! "zur Konsole"
Was es tun wird kontinuierlich, weil es keine Möglichkeit gibt, aus der Schleife auszubrechen.
Ich glaube nicht, dass cin.fail() das ist, was Sie hier verwenden möchten, es sieht so aus, als ob Sie wollen, dass ein Algorithmus Ihnen sagt, ob das Datum gültig ist oder nicht und die Abfrage zu wiederholen ist an den Benutzer, damit sie gute Daten eingeben können. Konzeptionell ist dies eine gute Übung, Sie sind auf dem richtigen Weg, aber Sie müssen ein bisschen mehr lernen.
Ich würde vorschlagen, einige Tutorials auf Eingabe/Ausgabe zu lesen und auch in Eingabe-Validierung. Dies ist eine hervorragende Ressource C++ http://www.cplusplus.com/doc/tutorial/
Und hier einige Informationen über Eingabevalidierung http://www.cplusplus.com/forum/beginner/121194/
So viele Fragen ... warum tut „der Compiler print“ alles für das Lernen?
Compiler machen das nicht. Und warum "ein * gültiges * Jahr" eingeben? Warum nicht einfach "ein Jahr eingeben"? Wann müssten Sie jemals angeben, dass Sie etwas * Gültiges * wollen? –
@KerrekSB: Es tut mir leid für mein mangelndes Verständnis der Terminologien, aber können Sie angeben, was in meinem Code geändert werden muss? – bffaf01
Das sieht wie ein Duplikat aus: http://stackoverflow.com/questions/5655142/how-to-check-if-input-is-numeric-in-c/5655685#5655685 – ebyrob