0
私はここで多くの既存の回答を通過しました。StackOverflow、しかし私はまだ立ち往生しています。C++でcinバッファをクリアする方法
コード:私は代わりに整数の入力例えばs
を絞る入力する
int c;
cin >> c;
if(cin.fail()) {
cout << "Wrong Input";
cin.clear();
cin.ignore(INT_MAX, '\n');
}
else
{
cout << c*2;
}
、それはWrong Input
を出力します。しかし、整数を入力して文字列を入力すると、文字列を無視して前の整数結果を出力し続けるため、cinバッファがクリアされず、古い値のc
が実行され続けます。 誰もがcin.ignore()
以外の最良の方法を提案してもらえませんか? と私のためにええ、cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
のmax()はエラーを返します。だからこれはどちらもうまくいかない。
@Nathanおかげで、なぜあなたはこの作業を行うための正しい方法を取得するために質問をしませんか? [This](http://stackoverflow.com/questions/21567291/why-does-stdgetline-skip-input-after-a-formatted-extraction)は、状況を正しく処理する方法です。 – NathanOliver
ご質問をより明確にすることができますか([MCVE]の提供など)。私は、あなたのコードではうまくいかないはずのものを見つけられません。私はそれを得ることができません[コンパイル](http://ideone.com/Syb32Q) –
@ NathanOliverこれは私に 'numeric_limits :: max()'エラーを与えるmax() (a、b))(((a)>(b))) (a):(b))」を使用してください。 @πάνταῥεῖ私はそれがより明確かもしれないと思うビデオをアップロードしようとします。 –
Nix