Проблема с использованием Boost :: Regex (консоль просто зависает) - PullRequest
0 голосов
/ 02 августа 2011

По какой-то причине boost :: regex перегружает мое приложение, и оно останавливается без ошибок, но компилируется нормально.Например, этот код не работает категорически.Что я делаю неправильно?Я обновил до версии 1.47, чтобы увидеть, была ли это ошибка DLL, но она все равно не работает.Могу ли я получить пример программы для проверки boost :: regex?

static const boost::regex expression("^[0-9]+");
std::string str = "123a1";
std::cout << boost::regex_search(str.c_str(), expression);

Ответы [ 2 ]

0 голосов
/ 03 августа 2011

После некоторой работы я удалил установку Boost из BoostPro и сам скомпилировал Boost, и теперь она работает.Проблема заключалась в том, что BoostPro не установил все библиотеки DLL, и я подумал, что когда меня спросят об отсутствующей DLL, BoostPro назвал их неправильно (boost_regex-vc100-mt-1_47.dll вместо boost_regex-vc100-mt-gd-1_47.dll).После получения правильной DLL все работает нормально.Спасибо за вашу помощь в устранении неполадок этого!

0 голосов
/ 02 августа 2011

Первое, что нужно сделать, это посмотреть, поддерживает ли ваша версия Boost многопоточность.Компиляция и запуск чего-то вроде следующего должны сказать вам, что:

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

int
main()
{
#ifdef BOOST_HAS_THREADS
    std::cout << "Boost has threads" << std::endl;
#else
    std::cout << "Boost doesn't support threads" << std::endl;
#endif
    return 0;
}

Во-вторых, необходимо убедиться, что все требования выполнены.Вы только что опубликовали фактические строки, а не контекст, в котором они выполняются.Если первая строка находится в области имен, у вас должно быть все в порядке (если вы не начали встраивать конструкторы в статические объекты, прежде чем вводить main: не делайте этого).Если первая строка имеет область видимости блока (т. Е. Находится в функции), то вы в порядке, только если первый вызов этой функции произошел до начала работы с потоками.(Насколько я понимаю, с g ++ у вас должно быть все в порядке, даже если первая строка имеет область видимости блока, но я не уверен.)

...