Вы захотите сопоставить строки с регулярным выражением.Выражение должно быть следующим:
[0-9]{n}\.[0-9]{m}
Здесь n и m - количество требуемых цифр.Вы можете построить регулярное выражение из строки, поэтому просто создайте строку шаблона из ваших параметров, а затем создайте регулярное выражение;это все в <regex>
на компиляторах C ++ 0x (или <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);