如何在qt creator和msvc中使用boost正则表达式

时间:2013-07-18 10:49:10

标签: c++ qt visual-c++ boost boost-regex

我安装了VS 2010已安装在我的系统中。 因此,当我下载QT(我必须使用QT作为项目所需的内容)时,我使用了this link并安装了它。 它能够自动检测可视化C ++编译器并且工作正常。

现在我从boost.org下载了boost库,并使用visual studio命令提示符中的以下命令进行安装: -

> bootstrap.bat msvc
> 
> c:\boost_1_54_0>b2 install --prefix=c:/boostinst toolset=msvc-10.0
> variant=debug ,release link=static threading=multi

之后我打开了qt creator并添加了以下代码cpp文件

#include <boost/regex.hpp>
#include
#include

int main()
{
    std::string line;
    boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );

    while (std::cin)
    {
        std::getline(std::cin, line);
        boost::smatch matches;
        if (boost::regex_match(line, matches, pat))
            std::cout << matches[2] << std::endl;
    }
}

并使用ADD Library添加了库,并生成了以下.pro文件。

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
INCLUDEPATH += C:\boostinst\include\boost-1_54 #if i remove this line, then also the same error



win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../boostinst/lib/ -llibboost_regex-vc100-mt-1_54
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../boostinst/lib/ -llibboost_regex-vc100-mt-1_54d
else:unix: LIBS += -L$$PWD/../../../boostinst/lib/ -llibboost_regex-vc100-mt-1_54

INCLUDEPATH += $$PWD/../../../boostinst/include
DEPENDPATH += $$PWD/../../../boostinst/include

当我尝试构建时,它会抛出以下错误

C:\ Users \ xxx \ newcp \ main.cpp:24:错误:C1083:无法打开包含文件:'boost / regex.hpp':没有这样的文件或目录

我错过了什么或做错了什么?请大家尽快回复。

1 个答案:

答案 0 :(得分:1)

已解决:使用以下命令在32位OS Win7和msvc-10.0中构建boost_154_00

>     cd C:\boost_1_54_0\tools\build\v2\engine
>     build.bat msvc
>
>     cd boost_1_54_0
>     
>     set PATH=%PATH%;C:\boost_1_54_0\tools\build\v2\engine\bin.ntx86
>     
>     bjam toolset=msvc-10.0

然后在QT中创建一个新项目并粘贴到 main.cpp

#include <QCoreApplication>
#include <boost/regex.hpp>
#include <iostream>
#include <string>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    std::string line;
     boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );

     while (std::cin)
     {
         std::getline(std::cin, line);
         boost::smatch matches;
         if (boost::regex_match(line, matches, pat))
             std::cout << matches[2] << std::endl;
     }
    return a.exec();
}

.pro 添加

INCLUDEPATH+=C:\boost_1_54_0
LIBS+=-LC:\boost_1_54_0\stage\lib\

按照路线here

然后在qt project-&gt; run-&gt; arguments

中添加参数