让程序只能输入数字和小数点c++
时间: 2024-09-25 10:00:17 浏览: 50
在C++中,限制用户输入仅包含数字和小数点可以利用`cin`流控制和条件判断实现。你可以创建一个循环,在用户输入时检查每个字符是否符合要求。下面是一个简单的示例:
```cpp
#include <iostream>
#include <string>
int main() {
double num;
std::cout << "请输入一个数字和小数点:" << std::endl;
while (true) {
char input_char;
std::cin >> input_char; // 读取一个字符
if (std::isdigit(input_char)) { // 检查是否是数字(0-9)
num = static_cast<double>(input_char); // 转换为double类型并累加到num上
} else if (input_char == '.') { // 检查是否是小数点
if (std::cin.peek() != '.') { // 确保下一个字符不是另一个小数点
num *= 10; // 如果已经有一个小数点,将前一个数值乘10
num += input_char - '0'; // 小数部分添加到num
std::cin.ignore(); // 忽略已读的小数点
} else {
std::cerr << "错误:不允许连续的小数点!" << std::endl;
continue;
}
} else { // 其他非数字字符
std::cerr << "错误:只允许输入数字和小数点!" << std::endl;
std::cin.clear(); // 清除输入流中的错误标志
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 防止无限循环
continue;
}
if (std::cin.fail()) {
std::cerr << "错误:输入无效,请输入一个数字和小数点组合!" << std::endl;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
continue;
}
break; // 输入有效,跳出循环
}
std::cout << "您输入的数字是: " << num << std::endl;
return 0;
}
阅读全文