如何限制输入用户可以输入值的小数位数?

时间:2014-09-23 05:45:11

标签: c++

对于Eg。接受4.55324作为用户输入,如果输入6.22356则拒绝,即接受小数点后5位。

2 个答案:

答案 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
}

请注意,上面的正则表达式非常严格:它接受12012+12.3-12.345670.12345,但拒绝{{1} },12..50.123450。您可能希望调整它以符合您的特定格式要求(无论它们是什么)。

答案 1 :(得分:1)

您可以使用std::getline将字符串作为字符串读取,然后根据需要解析该字符串(最后将double转换为c_str() 453.210e-3 0.1234567e+3 }或者最好是atof ...)

您的示例不够精确:您是否接受{{1}}或{{1}}等。

你真的应该阅读std::stof(我相信你的要求是无用的)