2012-06-29 39 views
13

Tại sao điều này không tìm được trận đấu trong g ++ (Debian 4.6.3-1) 4.6.3 hoặc kêu vang phiên bản 3.2 (trunk 159457)Không phù hợp với C++ 11 regex

#include <iostream> 
#include <string> 
#include <regex> 

using namespace std; 

int main() 
{ 
    string line("test"); 
    regex pattern("test",regex_constants::grep); 
    smatch result; 

    bool ret(false); 
    ret = regex_search(line,result,pattern); 
    cout << boolalpha << ret << endl; 
    cout << result.size() << endl; 
    return 0 ; 
} 

đầu ra

false 
0 

Trả lời

15

<regex> chưa được triển khai trong libstdC++, như được ghi trong tài liệu here (§28).

Hiện tại, hãy sử dụng Boost.Xpressive hoặc Boost.Regex để thay thế.

3

Bởi bây giờ ví dụ của bạn chạy một cách chính xác:

$ ~/src/gcc/inst/bin/g++ --version 
g++ (GCC) 4.9.0 20140224 (experimental) 

trên

$ uname -a 
Linux ... x86_64 x86_64 x86_64 GNU/Linux 

thực hiện

$ ./83-regex.x 
true 
1 
Các vấn đề liên quan