使用Boost::Regex的问题(控制台只是冻结)
Problem with using Boost::Regex (Console just freezes up)
由于某些原因boost::regex使我的应用程序过载,并且冻结而没有错误,但它编译得很好。例如,这段代码完全失败。我做错了什么?我更新到boost 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);
首先要做的是查看您的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++中,即使第一行具有块作用域,也应该没问题我不确定。
经过一些工作后,我从BoostPro删除了boost安装并自己编译boost,现在它可以工作了。问题是,BoostPro没有安装所有的DLL,我想当它问我一个丢失的DLL, BoostPro命名他们错误(boost_regex-vc100-mt-1_47.dll
而不是boost_regex-vc100-mt-gd-1_47.dll
)。获得正确的DLL后,一切都很好。感谢您的帮助解决这个问题!
相关文章:
- C++:将控制台输出存储在宏中更好吗
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- C++控制台应用程序阻止退出
- 如何修复此iFile以将.txt输出到控制台
- 为什么控制台要求输入,即使代码中没有输入
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- WIN32:C++,为什么在WM_CLOSE上调用Messagebox函数程序正在冻结
- 控制台输出在 Qt5 中未正确显示
- C++出现控制台错误.我无法识别源代码的问题
- C++程序不会从 Windows 控制台运行
- Win32 发送输入鼠标移动滞后并冻结
- 有人可以向我解释为什么控制台输出 0 吗?
- Visual Studio 2017 停止工作,并在打开后显示许多控制台窗口
- ImGui 在单击按钮后冻结
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- Win32 API 控制台光标在 WriteConsole 后不移动
- 如何获取控制台窗口的宽度?
- 异步控制台输入冻结了以前的输入 C
- 使用Boost::Regex的问题(控制台只是冻结)