tr1 :: regex (VS2008)에 대해 아주 이상한 문제가있어서 그 이유를 알 수 없습니다.정규 표현식 패턴 (tr1 :: regex)에서 예외가 발생하는 이유는 무엇입니까?
마이크로 소프트 C++ 예외 : 실행 중 4 번째 정규 표현식 정의에 도달 할 때 게시물의 끝에있는 코드는 예외를 잘 컴파일하지만 슬로우 표준 : TR1 :: regex_error 메모리 위치 0x0012f5f4에서 ..
그러나 3 번과 4 번 사이에 볼 수있는 유일한 차이점은 'SchemeVersion'대신 'NumberOfComponents'입니다. 처음에는 둘 다 (세 번째와 네 번째) 잘못 생각하고 세 번째 오류는 네 번째에서 방아쇠를 당겼을 것이라고 생각했습니다. 그건 둘 다 주위에 이동하고 그들 사이에 여러 다른 정규식 정의를 넣어로 사건이되지 않는 것 같습니다. 문제의 행 은 항상입니다.
사람은 그 라인
std::tr1::regex rxNumberOfComponents("\\NumberOfComponents:(\\s*\\d+){1}");
는 예외지만
std::tr1::regex rxSchemeVersion("\\SchemeVersion:(\\s*\\d+){1}");
을하지 않는 트리거 왜 어떤 생각을 가지고 있습니까? 런타임이 나를 혼란 스럽습니까?
시간을내어 읽고 통찰력을 얻었습니다.
T
PS : 나는 ... 해결책 내가 '바보 같은 질문'카르마을 균일하게하기 위해 가까운 벽에 머리를 쳐야 쉽습니다 완전히 확신
#include <regex>
int main(void)
{
std::tr1::regex rxSepFileIdent("Scanner Separation Configuration");
std::tr1::regex rxScannerNameIdent("\\ScannerName:((\\s*\\w+)+)");
std::tr1::regex rxSchemeVersion("\\SchemeVersion:(\\s*\\d+){1}");
std::tr1::regex rxNumberOfComponents("\\NumberOfComponents:(\\s*\\d+){1}");
std::tr1::regex rxConfigStartIdent("Configuration Start");
std::tr1::regex rxConfigEndIdent("Configuration End");
return 0;
}
"NumberOfComponents"라고 말하도록 rxSchemeVersion 행을 변경하면 어떻게됩니까? –
'std :: tr1 :: regex_error'는 다소 일반적인 것입니다. 에러 코드 란 무엇입니까 (예외를 (예)'rerr'로 잡고'rerr.code()'를 출력합니까?)? 그 결과를'std :: tr1 :: regex_constants :: error_type' 상수 (http://msdn.microsoft.com/en-us/library/bb982845(lightweight).aspx)와 비교하여 어떤 에러 (들) 너는 상대하고있어. – outis