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,程序将忽略小数点,但将 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)。

你会在这个网站上找到数百甚至数千种关于这个主题的变体。

于 2013-02-08T15:40:11.930 回答