Если вы ориентируетесь на уровень API 8, вы можете использовать глобальное regex Patterns.IP_ADDRESS . Вы можете напрямую включить это регулярное выражение в свой проект, если вы нацеливаете устройство с помощью android & lt; 2.2:
private static final Pattern IP_ADDRESS
= Pattern.compile(
"((25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(25[0-5]|2[0-4]"
+ "[0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1]"
+ "[0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}"
+ "|[1-9][0-9]|[0-9]))");
Matcher matcher = IP_ADDRESS.matcher("127.0.0.1");
if (matcher.matches()) {
// ip is correct
}
Не нужно заново изобретать это, просто используйте std::function
и std::bind
:
int main(){
std::function<void()> cmd0 = std::bind(&PrintIntFloat, 5, 6.2f);
std::function<void()> cmd1 = std::bind(&PrintStringInt, "Hello", 2u);
cmd1();
cmd0();
}
Обратите внимание, что я переименовал функции, потому что снятие наборов перегрузки проблематично в C ++. ]
Или вы можете использовать лямбды, в этом случае подъем не требуется (спасибо deW1 за предложение):
std::function<void()> cmd0 = [] { Print(5, 6.2f); };
std::function<void()> cmd1 = [] { Print("Hello", 2u); };