2012-12-16 65 views
1

可能重複:
C++0x regex in GCC使用正則表達式在C++ 11

我試圖++改造在C文件使用正則表達式,一些regex_error保持上發生的, 這裏是代碼:

std::ifstream inf(in); 
std::ofstream outf(out); 
try{ 
std::regex line_regex("[[:alnum:]]"); 
std::string line; 
while(std::getline(inf,line)) 
{ 
    if(std::regex_match(line,line_regex)) 
     outf<<line<<std::endl; 
} 

錯誤消息是:

terminate called after throwing an instance of 'std::regex_error' 
what(): regex_error 

順便說一下,我在linux x64上使用gcc 4.7.2。

+2

gcc版本4.6.1只對std :: regex有部分支持,我不知道它是否已經在4.7.0版本中得到了修復,第二個想法我認爲他們還沒有修復它檢查正則表達式這裏http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2011 – Chipmunk

+0

我在4.6.2上試過'std :: regex'並且無法讓它工作。取而代之的是包裹PCRE。我認爲Perl正則表達式語法是最好的和最具表現力的,而PCRE是一個非常穩定的歷史悠久的庫。 –

回答

5

GCC的執行<regex>是無法使用的。不要浪費你的時間。

+1

是的,我使用boost版本,它工作正常。 – flyingfoxlee

+1

@flyingfoxlee - 與微軟版本一樣。 –