Недавно я написал регулярные выражения для анализа содержимого в моем файле, но это было в .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 с вышеупомянутым регулярным выражением, чтобы получить мой результат в трех переменных?
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;
}
Других решений пока нет …