对于Eg。接受4.55324作为用户输入,如果输入6.22356则拒绝,即接受小数点后5位。
答案 0 :(得分:2)
最简单的方法是将输入作为字符串读取,检查它是否与您想要的格式匹配,然后才将其转换为数字。例如,使用C ++ 11 regex功能进行验证:
double number;
std::string input;
std::cin >> input;
std::regex pattern ("^[-+]?[0-9]+(\.[0-9]{1,5})?$");
if (std::regex_match(input, pattern)) {
number = std::stod(input);
}
else {
// handle invalid input here
}
请注意,上面的正则表达式非常严格:它接受12
,012
,+12.3
,-12.34567
和0.12345
,但拒绝{{1} },12.
,.5
和0.123450
。您可能希望调整它以符合您的特定格式要求(无论它们是什么)。
答案 1 :(得分:1)
您可以使用std::getline将字符串作为字符串读取,然后根据需要解析该字符串(最后将double
转换为c_str()
453.210e-3
0.1234567e+3
}或者最好是atof ...)
您的示例不够精确:您是否接受{{1}}或{{1}}等。
你真的应该阅读std::stof(我相信你的要求是无用的)