簡體   English   中英

C ++ boost :: regex_match給出所有NULL結果

[英]C++ boost::regex_match gives all NULLs results

我面臨一個奇怪的問題,那就是boost :: regex_match提供所有NULL結果。

對不起,不好的問題描述。 讓我復制並粘貼下面的代碼。

我認為Boost lib版本應該是Boost 1-47-0。 Linux上的GCC 4.3.2。

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

using namespace std;

int main()
{
    string aFreeText = "26JAN07";
    boost::regex expression("([0-9]{2}[A-Z]{3}[0-9]{2})");
    boost::smatch results;

    if(boost::regex_match(aFreeText, results, expression))
    {
        for(int index=0; index<results.size(); index++)
            DEBUG("YI JI results[" << index << "].str(): " << results[index].str());
    }

    return 0;
}

但是,在日志中,顯示非常奇怪。

在此處輸入圖片說明

有人可以幫助我解決這個問題嗎? 您的幫助將不勝感激。

如果所提供的信息不夠,請隨時發表您的評論,我將在以后添加。

您的代碼可以在Windows 7(64位)上使用Boost 1.55,GCC 4.9.2正常工作

您的Boost安裝可能有問題

下面的代碼產生以下結果(與您預期的一樣)

$ ./re.exe 
Results[0].str(): 26JAN07

C ++代碼: re.cpp

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

using namespace std;

int main()
{
    string aFreeText = "26JAN07";
    boost::regex expression("[0-9]{2}[A-Z]{3}[0-9]{2}");
    boost::smatch results;
    if(boost::regex_match(aFreeText, results, expression))
    {
        for(size_t index=0; index<results.size(); ++index)
        {
            std::cout<<"Results[" << index << "].str(): " << results[index].str()<<std::endl;
        }
    }
    return 0;
}

使用的CMakeLists.txt看起來像

CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8)
PROJECT(RE)

#############################################################################
SET(Boost_USE_STATIC_LIBS   ON)
SET(Boost_USE_MULTITHREADED OFF)
FIND_PACKAGE(Boost 1.53 COMPONENTS regex REQUIRED)
#############################################################################
IF (NOT(MSVC))
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
ENDIF()

ADD_EXECUTABLE(re re.cpp)
INCLUDE_DIRECTORIES(SYSTEM ${Boost_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES(re ${Boost_LIBRARIES})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM