使用Boost :: Regex的问题(控制台刚冻结)

时间:2011-08-02 09:01:48

标签: c++ boost boost-regex

出于某种原因,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 :(得分:0)

要做的第一件事是看看你的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 ++,即使第一行具有块范围,你也应该没问题,但是 我不确定。)

答案 1 :(得分:0)

经过一些工作后,我从BoostPro中删除了boost安装并自行编译了boost,现在它可以工作了。问题是BoostPro没有安装所有的DLL,我想当它问我缺少BoostPro错误的DLL(boost_regex-vc100-mt-1_47.dll而不是boost_regex-vc100-mt-gd-1_47.dll)时。获得正确的DLL后,一切正常。感谢您帮助解决此问题!