cin.ignore
とはどう違いcin.sync
ますか?
質問する
15641 次
1 に答える
17
cin.ignore
指定された数まで、または区切り文字に到達するまで (含まれている場合)、文字を破棄します。引数なしで呼び出すと、入力バッファーから 1 文字が破棄されます。
たとえば、cin.ignore (80, '\n')
80 文字、または改行に到達するまで検出した文字数を無視します。
cin.sync
入力バッファからすべての未読文字を破棄します。ただし、各実装でそうすることが保証されているわけではありません。したがって、ignore
一貫性が必要な場合は、 を選択することをお勧めします。
cin.sync()
残っているものをクリアするだけです。sync()
私が考えることができる唯一の用途ignore
は、次の代替品ですsystem ("PAUSE");
。
cin.sync(); //discard unread characters (0 if none)
cin.get(); //wait for input
と を使用するcin.ignore()
とcin.get()
、これは少し混ざり合う可能性があります。
cin.ignore (std::numeric_limits<std::streamsize>::max(),'\n'); //wait for newline
//cin.get()
改行が残っている場合は、置くだけignore
でスキップされるようです。ただし、両方を配置すると、改行がない場合は 2 つの入力を待機します。読み取られていないものをすべて破棄すると、その問題は解決しますが、やはり一貫性がありません。
于 2012-05-14T14:34:28.130 に答える