Wenn Sie stream >> variable
aufrufen, je nach Typ variable
, wird die stream
versuchen, Zeichen zu verarbeiten, um etwas zu erhalten, das für einen solchen Variablentyp gültig ist. Wenn dies nicht der Fall ist, wird stream
s failbit
eingestellt, damit Sie das überprüfen können.
for (int i=vecais;i<jaunais;i++)
{
cin >> jaunais_skaitlis;
if (cin.fail())
{
// abort, user inputed something, which is not integer.
}
a[i] = jaunais_skaitlis;
}
Vorsicht, dass stream
wird so viel tun, wie es kann tatsächlich etwas von dem Eingang zu extrahieren. Wenn Sie also 123qffe541e
eingeben, handelt es sich tatsächlich um eine gültige Eingabe, jaunais_skaitlis
enthält 123
und der Rest der Zeichen verbleibt im Stream (daher bei der nächsten Iteration fehlgeschlagen).
Wenn Sie wirklich überprüfen wollen, ob die ganze Eingabe eine Ganzzahl ist, müssen Sie mehr Zeichen lesen (z. B. lesen Sie std::string
, entweder ein einzelnes Wort oder ganze Zeile, je nach Ihren Bedürfnissen) und dann verarbeiten.
cin selbst sollte Ihnen sagen, ob es Integer lesen konnte oder nicht. Es sollte eines der Fehlerflags gesetzt haben. – Incomputable