如何让PCRE与C++一起使用?

Mik*_*ke 9 c++ pcre

这是一个新手问题,但我希望我能尽可能清楚地表达我的问题.

我正在尝试用C++进行模式匹配.

我从这里下载了WinRE 版本的PCRE,并将下载的pcre3.dll和pcreposix3.dll文件放入Dev-CPP的lib文件夹(我使用的是Bloodshed Dev-C++ 4.9.9 IDE).

我还下载了一个pcrecpp.h头文件,并将它放在同一个目录中,我正在编写以下代码(实际上并没有写.我正在处理一个名为PCRE-Perl Compatible Regular Express的PDF教程中的示例代码).

但我无法让它发挥作用.代码如下:

    #include <iostream>
    #include <string>
    #include <pcrecpp.h>

    using namespace std;

    int main()
    {
       int i;
       string s;
       pcrecpp::RE re("(\\w+):(\\d+)");
       if (re.error().length() > 0) {
          cout << "PCRE compilation failed with error: " << re.error() << "\n";
       }
       if (re.PartialMatch("root:1234", &s, &i))
       cout << s << " : " << i << "\n";
    }
Run Code Online (Sandbox Code Playgroud)

当我编译代码时,Dev-C++给了我很多错误,包括:"`pcrecpp'尚未声明"和"RE"未声明.

我该如何处理下载的文件并修复我的问题?或者有什么明显的东西让我失踪?

Bar*_*nau 6

如果您#include使用尖括号(<>)指定文件,那么只要编译器知道它们,编译器将只在外部库的位置中查找该标头.
如果您改为使用引号(""),则编译器还将查找当前项目的位置,该项目通常包括当前目录.

您当前问题的快速解决方法是使用

#include "pcrecpp.h"
Run Code Online (Sandbox Code Playgroud)

另一种方法是告诉编译器它可以在哪里找到PCRE库的头文件.
您必须告诉编译器它可以在哪里找到PCRE库的头文件.如何做到这一点不同于构建系统到构建系统,但如果您使用的是IDE,那么应该有一个选项来指定"包含目录".您可以在此处添加PCRE标头的目录(带完整路径).


作为旁注:当编译器为您提供大量错误和警告时,请始终先修复第一个错误和警告.我猜想在这种情况下它就像"无法找到标题:pcrecpp.h".
通常的情况是,如果编译器在遇到问题后尝试继续,则会发现更多问题,这些问题是第一个问题的后续问题.当第一个问题得到解决时,这些问题也会神奇地消失.