0

整数のみを受け入れることになっているプログラムを書いています、私は現在使用しています

int x;
cin >> x;
while(cin.fail()){
    cout << "error, please enter an integer" << endl;
    cin.clear();
    cin.ignore();
    cin >> z;
    cout << "you entered" << z << endl;
}

ただし、たとえば1.2のdoubleを入力すると、プログラムは小数点を無視しますが、zの値を2に設定し、ユーザー入力を要求しません。これを止めるにはどうすればよいですか?

4

1 に答える 1

4

これが手に負えなくなる前に、ここでも入力操作の典型的な例を示します。

#include <string>   // for std::getline
#include <iostream> // for std::cin
#include <sstream>  // for std::istringstream


for (std::string line; std::cout << "Please enter an integer:" &&
                       std::getline(std::cin, line); )
{
    int n;
    std::istringstream iss(line);

    if (!(iss >> n >> std::ws) || iss.get() != EOF)
    {
        std::cout << "Sorry, that did not make sense. Try again.\n";
    }
    else
    {
        std::cout << "Thank you. You said " << n << ".\n";
    }
}

入力ストリームを閉じるか、他の方法(Ctrl-Dを入力するなど)で終了するまで、整数を要求し続けます。

このWebサイトには、このテーマのバリエーションが数千とは言わないまでも数百あります。

于 2013-02-08T15:40:11.930 に答える