7

我正在尝试在我的程序中使用 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;
      }
   }
}

似乎是什么问题?应该进行任何其他设置吗?

4

4 回答 4

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

注 9.0 指的是 VS 2008。(2010 年为 10.0,2005 年为 8.0,2003 年为 7.1,6.0 为 6.0)。完成此操作后:

  1. 提取build_boost.bat<boost_root>

  2. 转到: <boost_root>\tools\jam 然后运行build_dist.bat

  3. 复制<boost_root>\tools\jam\stage\bin.ntx86\bjam.exe<boost_root>

  4. boost_build.bat

  5. 图书馆位于<boost_root>\stage\lib

注意,这是我自己的方法。如果有人以更简单的方式发出声音,或者来自 Boost 的链接,我会很高兴;似乎很难从 Boost 中找到正确的构建说明。

构建完成后,确保让编译器知道库在 VC 目录(库路径)中的位置;添加“ <boost_root>\stage\lib”。


bjam定义中,我有_SECURE_SCL=0 _HAS_ITERATOR_DEBUGGING=0发布。这将禁用发布版本中的所有迭代器检查,以提高速度。

于 2010-02-16T16:06:39.183 回答
2

在 Windows 上,获取 boost 二进制库的最简单方法是运行来自 BoostPro 咨询的安装程序。请务必选择您的 Visual Studio 版本并在安装期间选中正则表达式库的复选框。

于 2011-09-18T12:53:04.893 回答
1

你安装了多线程调试版的Boost吗?如果没有,请这样做。否则检查您的库路径(在项目首选项中),以便它包含错误消息中提到的文件的路径。

于 2010-02-16T16:03:03.237 回答
0

我不确定定义设置,但我能够通过运行<boostroot>\bootstrap批处理文件来使用 MSVC 9.0 构建,然后<boostroot>\project-config.jam按如下方式编辑文件。换行:

using mvsc

至:

using msvc : 9.0 : cl.exe

然后运行.\b2 install,boost 头文件和库被构建并安装到c:\boost.

于 2012-06-23T06:50:08.903 回答