Вопрос

Я хочу найти первое пространство на линии, используя Boost :: String_algo's Find Find:

const boost::iterator_range<std::string::iterator> token_range = boost::find_first(line, " ");

Кажется, я не могу найти ничего в документах, которые говорят, что это возвращает, если не найдет пространство. Нужно ли проверить token_range.end () против line.end () или что -то в этом роде?

Спасибо!

Это было полезно?

Решение

Я думаю, тебе следует просто проверить token_range.empty(), как это:

const boost::iterator_range<std::string::iterator> token_range = boost::find_first(line, " ");
if (!token_range.empty())
{
    // Found a a match
}

boost::iterator_range Также имеет оператор преобразования Bool, так что вы можете даже отбросить вызов функции Pement () и просто написать:

const boost::iterator_range<std::string::iterator> token_range = boost::find_first(line, " ");
if (token_range)
{
    // Found a a match
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top