Ich habe diese Schleife jetzt, dass in Zahlen liest und gibt sie in dezimal, oktal und hexadezimal:Wegwerfen Buchstaben außer Zahlen mit cin
while(1) {
if (cin >> n)
cout << internal << setfill(' ') << setw(10) << dec << n << internal << setw(12) << oct << n << internal << setw(9) << hex << uppercase << n << endl;
if (cin.fail()) {
break;
}
}
Allerdings, wenn ich versuche, Eingaben zu verwerfen, die keine Zahlen sind mit Dies wird nicht in der Eingabe nach den Buchstaben gelesen:
if (cin.fail()) {
cin.ignore();
}
Wie verwerfe ich Eingang, aber in der Lage, andere Eingabe später zu lesen?
Probe Input:
23
678 786 abc
7777
Erwartete Ausgabe: Dezember, Oktober, hex
23 27 17
678 1246 2A6
786 1422 312
7777 17141 1E61
Sie verpassen einen Aufruf von 'cin.clear()'. Sie brauchen das, um das Failbit zu löschen. Solange es eingestellt ist, schlagen alle Operationen sofort fehl. –