Вы можете полностью избежать проверки исключений, просто проверив возвращаемое значение find
first:
if ((index == std::string::npos || index == 0) ||
(text[index - 1] < '0' && text[index - 1] > '9') )
{
return false;
}
В первом случае, npos
, строка поиска не найдена, а во втором случае она находится в самом начале строки окружения, поэтому вы не можете смотреть на символ перед ним.
(Это называется «оскорбительным программированием»: не проверяйте наличие ошибок во время выполнения, но постройте свой алгоритм так, чтобы вы знали , что ваш доступ правильный. Если вы это сделаете, вы можете добавить утверждение assert(index < text.length());
, чтобы выразить уверенность в том, что вы придерживаетесь правильного значения, которое не отразится на вашей версии выпуска.)
Обновление: Заменяет .at()
на []
, поскольку мы уверены в себе.