我想知道如何使用std::cin将输入值限制为带符号的小数。
发布于 2009-02-05 03:58:18
double i;
//Reading the value
cin >> i;
//Numeric input validation
if(!cin.eof())
{
peeked = cin.peek();
if(peeked == 10 && cin.good())
{
//Good!
count << "i is a decimal";
}
else
{
count << "i is not a decimal";
cin.clear();
cin >> discard;
}
}这也给出了输入-1a2.0的错误消息,避免了将-1赋值给i。
发布于 2009-02-05 03:34:44
如果cin的支持变量是数字,而提供的字符串不是数字,则返回值为false,因此需要一个循环:
int someVal;
while(!(cin >> someVal)) {
cin.reset();
cout << "Invalid value, try again.";
}发布于 2009-02-05 22:52:00
cin的>>操作符的工作方式是一次读取一个字符,直到它到达空格。这将吞噬整个字符串-1a2.0,它显然不是一个数字,因此操作失败。看起来您实际上有三个字段,-1、a和2.0。如果用空格分隔数据,cin将能够毫无问题地读取每个数据。只需记住读取第二个字段的char即可。
https://stackoverflow.com/questions/514420
复制相似问题