2013-03-22 3 views
2

다음 실행 파일이 있습니다. gcc 4.7.2 (g ++ foo.cc -std = C++ 11)로 컴파일합니다.std :: regex 선언 이해 : 런타임에 regex_error 예외

런타임에는 예외 regex_error가 발생합니다.

내가 뭘 잘못하고 있니? 예외의

#include <regex> 

int main(int, char**){ 
    std::regex re("\\d"); 
} 

UPDATE 오류 코드 error_escape이다. 그래서 "\\ d"시도했습니다. 그것은 런타임에 실패하지 않지만, 다시 "1"과 일치하지 않지만 "\ d"와 일치합니다. 그래서 이것은 내가 원하는 것을 분명히하지 않습니다.

+3

AFAIK, g ++은 정규 표현식을 아직 지원하지 않습니다. clang으로 컴파일 된 코드는 완벽하게 작동합니다. – soon

+1

@soon : libstdC++, g ++이 아닙니다. – Fanael

+2

@soon : "완벽", "완벽하지 않음" –

답변

1

그래서 대답은 GCC4.7 STL의 구현이 불완전한 것으로 보입니다. 의견을 보내 주셔서 감사합니다.

No matches with c++11 regex

는 곧 나단 에른스트 감사합니다!

-3

왜 잡으려고하지 않습니까?

#include <regex> 
#include <iostream> 

int main(int, char**){ 
    try { 
     std::regex re("\\d"); 
    } catch(std::exception const& e) { 
     std::cout << e.what() << "\n"; 
    } 
} 
+1

이것은 어떻게 예외를 설명합니까? –

+0

@LightnessRacesinOrbit 대부분의 경우,'e.what()'는 당신에게 무슨 일이 일어나고 있는지에 대한 현명한 설명을 줄 것입니다 ... –

+0

OP는 어떤 예외가 던져지고 있는지 이미 알고 있습니다. 질문은 _why_입니다. –