Die C++ FAQ over at parashift nutzt etwas ähnlich der folgenden:Warum würde ich istream :: ignore sogar verwenden, wenn ich nach gültigen Eingaben suche?
while (cout << "Enter an integer: " && !(cin >> foo))
{
cin.clear();
//feel free to replace this with just (80, '\n') for my point
cin.ignore (numeric_limits<streamsize>::max(), '\n');
}
Die cin.ignore (...)
scheint jedoch nicht notwendig. Warum kann ich nicht einfach verwenden? Es ist kürzer und benötigt keine Länge. Es ist auch vielseitiger, da es auf die gleiche Weise funktioniert, ob überhaupt Zeichen im Eingabepuffer vorhanden sind oder nicht. Ich habe dies einmal in der gleichen Schleife wie ich mit ignore
getestet und es funktioniert auf die gleiche Weise. Es scheint jedoch, dass jedes Beispiel, das diese Art der Eingabevalidierung betrifft, ignore
anstelle von sync
verwendet.
Was (wenn überhaupt) war der Grund für die Verwendung von ignore
, wenn es eine viel einfachere Alternative gibt?
Wenn es darauf ankommt:
Windows-
GCC
MinGW
Immer mit der Implementierung definiert, huh. Ich denke, es wäre ein guter Kandidat für diesen Zweck, wenn es nicht wäre. – chris
@chris: Ja, wenn es zuverlässig tun würde, was Sie wollen, wäre es ein guter Kandidat zu tun, was Sie wollen. :-) –