Повысьте регулярное выражение, не соответствующее & quot; \\ s & quot; в пространствах

Я только начинаю с boost и c ++ и пытаюсь понять поведение механизма регулярных выражений boost, когда дело доходит до совпадения пробелов. Если я использую код:

boost::regex rx(" ");
cout << regex_search(" ", rx);

чтобы соответствовать пробелам, тогда все работает как положено, и regex_search возвращает true. Однако, если я попытаюсь заменить регулярное выражение на «\ s», чтобы соответствовать всем пробельным символам, я никогда не получу совпадение, и следующий код всегда выводит false:

boost::regex rx("\\s");
cout << regex_search(" ", rx);

Что мне здесь не хватает?

Как и требовалось, вот мой полный контрольный пример:

#include <boost/regex.hpp>
#include <iostream>

using namespace std;

int main()
{
boost::regex rx("\\s", boost::regex::icase);
cout << regex_search(" ", rx);
}

0

Решение

Понял — я изначально использовал готовые библиотеки из ascend4.org/Binary_installer_for_Boost_on_MinGW. После сборки Boost 1.52 код работает как положено. Попытка ускорить процесс ускоренной сборки обошлась мне в пару часов разочарования … Теперь я усвоил урок!

2

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

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