Если производительность является проблемой в вашем случае, я предлагаю следующее:
Решение 1:
std::string input(<your string value>);
int val;
if (sscanf(input.c_str(), "%d", &val) != 1)
{
cout << "it's empty/not an integer";
}
else
{
cout << "val is:" << val;
}
Решение 2:
std::string input(<your string value>);
int val;
if(strcmp(input.c_str(), "") ==0)
{
cout << "it's empty";
}
else
{
val = atoi(input.c_str());
cout << "val is:" << val;
}
Я предлагаю использовать первое решение, потому что, если ввод запускает недопустимое содержимое (не целое число), решение atoi завершается неудачно (atoi возвращает 0 при ошибке).
Хотя, еслиу вас значения могут быть только "", "0", "1", "2", "3", второе решение тоже должно работать.