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 に答える