我正在尝试在我的程序中使用boost regex 问题是我得到这个错误...... 我做的唯一安装步骤是添加:“C:\ Program Files \ boost \ boost_1_42” 进入附加包含目录...
我正在使用VS2008 ......
试图实现这个:
#include <iostream>
#include <string>
#include <boost/regex.hpp>
using namespace std;
int main( ) {
std::string s, sre;
boost::regex re;
boost::cmatch matches;
while(true)
{
cout << "Expression: ";
cin >> sre;
if (sre == "quit")
{
break;
}
cout << "String: ";
cin >> s;
try
{
// Assignment and construction initialize the FSM used
// for regexp parsing
re = sre;
}
catch (boost::regex_error& e)
{
cout << sre << " is not a valid regular expression: \""
<< e.what() << "\"" << endl;
continue;
}
// if (boost::regex_match(s.begin(), s.end(), re))
if (boost::regex_match(s.c_str(), matches, re))
{
// matches[0] contains the original string. matches[n]
// contains a sub_match object for each matching
// subexpression
for (int i = 1; i < matches.size(); i++)
{
// sub_match::first and sub_match::second are iterators that
// refer to the first and one past the last chars of the
// matching subexpression
string match(matches[i].first, matches[i].second);
cout << "\tmatches[" << i << "] = " << match << endl;
}
}
else
{
cout << "The regexp \"" << re << "\" does not match \"" << s << "\"" << endl;
}
}
}
似乎是什么问题?应该进行任何其他设置吗?
答案 0 :(得分:14)
必须构建一些Boost库;这是其中之一。以下是构建它们的方法:
创建一个名为boost_build.bat
的新文件,并在内部放置:
bjam toolset=msvc-9.0 variant=release threading=multi link=static define=_SECURE_SCL=0 define=_HAS_ITERATOR_DEBUGGING=0
bjam toolset=msvc-9.0 variant=debug threading=multi link=static
Note 9.0指的是VS 2008.(2010年为10.0,2005年为8.0,2003年为7.1,6.0为6.0,以及6.0)。一旦你完成了这个:
将build_boost.bat
提取到<boost_root>
转到:
<boost_root>\tools\jam
并运行build_dist.bat
将<boost_root>\tools\jam\stage\bin.ntx86\bjam.exe
复制到<boost_root>
运行boost_build.bat
图书馆位于<boost_root>\stage\lib
注意,这是我自己的方法。我会爱如果有人以更简单的方式说话,或者来自Boost的某些链接;似乎很难从Boost找到合适的构建指令。
构建完成后,请确保让编译器知道VC目录中库的位置(库路径);添加“<boost_root>\stage\lib
”。
在bjam
定义中,我发布了_SECURE_SCL=0
_HAS_ITERATOR_DEBUGGING=0
。这会禁用Release版本中的所有迭代器检查,以提高速度。
答案 1 :(得分:2)
在Windows上,获取boost二进制库的最简单方法是运行installer from BoostPro consulting。请务必选择您的Visual Studio版本,并在安装过程中选中正则表达式库的复选框。
答案 2 :(得分:1)
您是否安装了Boost的多线程调试版本?如果没有,请这样做。否则,请检查您的库路径(在项目首选项中),以便它包含错误消息中提到的文件的路径。
答案 3 :(得分:0)
我不确定定义设置,但是我可以通过运行<boostroot>\bootstrap
批处理文件,然后按如下方式编辑<boostroot>\project-config.jam
文件来获得使用MSVC 9.0构建的提升。改变这一行:
using mvsc
为:
using msvc : 9.0 : cl.exe
然后运行.\b2 install
并构建了boost标头和库并将其安装到c:\boost
。