Использование boost для извлечения контента из строки

Недавно я написал регулярные выражения для анализа содержимого в моем файле, но это было в .NET, и я только начал использовать Boost для своего проекта C ++.

У меня есть строка, похожая на следующую, которая является std :: string
123 12 E

что я должен разобрать и получить следующее.

float = первая цифра
float = вторая цифра
строка = третий алфавит

Поскольку у меня есть опыт использования регулярных выражений, я знаю, что такое регулярное выражение

const char* Regex = "^[[:space:]]*(\\d{1,3})[[:space:]]*(\\d{1,2})[[:space:]]*([NSEW])[[:space:]]*"

Но я не уверен, как использовать это с boost для извлечения трех вещей из моей линии. Я пытался читать примеры на веб-сайте Boost, и это, похоже, не отвечало на мой вопрос, так как мне пришлось бы зацикливаться, чтобы найти эту маленькую деталь. Как я могу использовать Boost Regex с вышеупомянутым регулярным выражением, чтобы получить мой результат в трех переменных?

0

Решение

http://www.boost.org/doc/libs/1_52_0/libs/regex/doc/html/boost_regex/introduction_and_overview.html дает пример соответствия. Вы в конечном итоге с match_results структура, из которой вы можете получить спички.

Непроверенный код

const char *str = "123 12 E";
boost::regex re ("^(\\d{1,3}) (\\d{1,2}) ([NSEW])$");
boost::cmatch mr;
if (boost::regex_match ( str, mr, re )) {
std::cout << "There were: " << mr.size () - 1 << " fields matched" << std::endl;
std::cout << "First part: " << mr[1] << std::endl;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]