0

わかりました、私は C++ に非常に慣れていません。私は C# に慣れていて、自分のコードのどこが間違っているのか本当にわかりません。ユーザーの入力が整数か文字列かを確認する方法を見つけようとしています。

しかし、「a」またはその他の文字列を入力すると、while ループが終了しません。

    #include <iostream>

using namespace std;

int main ()
{
    int number;
    goto skip;
    do
    {
        cout << "Wrong input. Try again.";
skip:
        cout << "Number: ";
        cin >> number;
    }
    while (!cin);
    cout << "Correct input.";
    system("PAUSE");
}
4

1 に答える 1

4

ストリームが失敗モードになるとclear()、状態ビットが表示されるまで失敗モードのままになります。ただし、ビットをクリアするだけでは問題のある文字がストリームに残るため、役に立ちません。ほとんどの場合、再試行する前に行全体を無視する必要があります。

while (!(std::cout << "Number: " && std::cin >> number)) {
    std::cout << "Wrong input. Try again.\n";
    std::cin.clear();
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
std::cout << "Correct input.\n";
std::cin.ignore();
于 2013-10-02T00:14:12.503 に答える