parashiftのC++ FAQ では、次のようなものを使用しています。
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');
}
cin.ignore (...)
ただし、は不要のようです。なぜ使えないのcin.sync()
ですか?それはより短く、長さを必要としません。そもそも入力バッファに文字があるかどうかに関係なく同じように機能するため、より用途が広いです。使用したのと同じループでこれを1回テストしましたがignore
、同じように機能しました。しかし、このタイプの入力検証を含むすべての例では、ignore
の代わりに を使用しているようですsync
。
ignore
はるかに単純な代替手段がある場合、使用の背後にある理由は何ですか?
重要な場合:
Windows
GCC
MinGW