我正在写一个应该只接受整数的程序,我正在使用
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并且不会请求用户输入。 我能做些什么来阻止这个?
答案 0 :(得分: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)之前,它会一直询问整数。
您将在本网站上找到数百个(如果不是数千个)此主题的变体。