cin >> input checken
-
Hallo Leute,
Wie schaut man am besten ob eine Eingabe "korrekt" war.
Ich mache es meist so:
int i; std::cout << "Enter Number: " ; while(!(std::cin >> i)) { std::cin.clear(); std::cin.ignore(256 , '\n'); std::cout << "Enter Number :"; }..Aber mich stört das doppelte std::cout . Kann man das eleganter machen?
-
while(std::cout << "Enter Number: ", !(std::cin >> i)) { std::cin.clear(); std::cin.ignore(256 , '\n'); }
-
int i; bool parseOk = false; do { std::cout << "Enter Number: " ; parseOk = std::cin >> i; std::cin.clear(); std::cin.ignore(256 , '\n'); } while(!parseOk);Wäre mein Vorschlag.
-
while(std::cout << "Enter Number: ", !(std::cin >> i)) { std::cin.clear(); std::cin.ignore(256 , '\n'); }It could be so easy.... Danke!
-
std::istream& clear_line(std::istream& in) { if (in.fail()) { in.clear(in.rdstate() & ~std::ios_base::failbit); in.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } return in; } int main() { int i; do std::cout << "Enter Number: "; while (!(std::cin >> clear_line >> i)); }
-
Kurzer Nachtrag, while mit mehreren Bedingungen hatte ich bis jetzt eher mit && verknüpft, finde gerade in der doku die Variante mit dem Komma nicht ??
-
Guckst du Comma Operator.
-
beg_offl schrieb:
Kurzer Nachtrag, while mit mehreren Bedingungen hatte ich bis jetzt eher mit && verknüpft, finde gerade in der doku die Variante mit dem Komma nicht ??
Der Wert des Kommaoperators ist der rechte Operand.
-
Danke