1

これは最初は奇妙な質問のように思えるかもしれませんが、cinリクエストが行われたときに、間違ったタイプを受け取った場合でも続行されますが、ステータスはcin変更されます。

OKになるまでループするにはどうすればよいですかcin。たとえば、数値を要求したときに、ループなどの追加のコードが指定されていない場合、文字列を「受け入れる」のでしょうか。

最後にcin、連続して複数回使用すると、最初cinは期待どおりに実行され、その後はスキップされます。これを修正するにはどうすればよいですか?さらに詳しい情報が必要な場合は、コメントで質問してください。

// Example
cout << "Enter a number: ";
cin >> num; // A string is given

cout << "Enter another number: ";
cin >> num2;

上記の例では、文字列はちょっと受け入れられ、2番目のcinは何らかの理由でスキップする可能性があります。しばらく前にこの質問の答えを見つけましたが、使用したループのスニペットを失いました:/

4

1 に答える 1

2

例:

int value;
while(!(cin >> value))
{
    cin.clear();
    cin.ignore();  // eat one character
}

while(!(cin >> value))
{
    cin.clear();
    cin.ignore(10000,'\n');  // eat the rest of the line
}
于 2011-04-14T21:55:25.487 に答える