我想根据格式说明符验证用户输入。例如格式说明符%4.5f,%4f,%10.5f等。如果我指定%5.2f作为格式说明符我应该能够验证用户输入是否为是否满足给定格式%5.2f?
注意:我在Windows环境中使用C ++。
答案 0 :(得分:2)
您需要对正则表达式进行字符串匹配。表达式应为:
[0-9]{n}\.[0-9]{m}
此处 n 和 m 是要获得的位数。您可以从字符串构建正则表达式,因此只需从参数中创建模式字符串,然后构造正则表达式;在C ++ 0x编译器上只有<regex>
(否则为<tr1/regex>
)。
小心匹配整个输入字符串或按字边界包围表达式,以避免12345.67890与m = 2匹配,n = 2为“45.67”。
编辑:以下是一种方法:
std::regex make_pattern(size_t m, size_t n)
{
std::ostringstream ss;
ss << "\b([0-9]{" << std::dec << m << "}\\.[0-9]{" << n << "})\b";
return std::regex(ss.str());
}
/* later */
std::regex rx = make_pattern(4, 5);
std::string input = get_input();
const bool is_valid = std::regex_match(input, rx);