이 C++ 코드는 비주얼 스튜디오 2010에서 실패 : 첫 번째 루프 후C++의 함수 매개 변수에서 생성자를 사용하는 것이 안전합니까?
const sregex_iterator end;
for (sregex_iterator match(origString.begin(), origString.end(), regex(regExPattern)); match != end; ++match)
{
useMatch(*match);
}
를 첫 번째 반복자 증가 (operator++
) 디버거가 regex_iterator는 "고아"것을 나타내는 실패에.
const sregex_iterator end;
regex regexObj(regExPattern);
for (sregex_iterator match(origString.begin(), origString.end(), regexObj); match != end; ++match)
{
useMatch(*match);
}
.
하지만 첫 번째 시도가 실패하는 이유는 무엇입니까? 나는 그것이 for
범위이거나 어쩌면 인라인 된 생성자와 iterator 생성자의 regex 매개 변수가 참조라는 사실을 가지고 있어야한다. ...
그러나 얼마 전에 stackoverflow에서 읽었을 때, 나는 기억한다. 내가 이해할 수있는 것들만 있고 C++에서 함수 매개 변수로 생성자를 사용하는 것이 안전한지 알고 싶습니다 (물론 new
을 사용하지 않고).
'const sregex_iterator end'를 초기화하지 않는 것이 맞습니까? – Chowlett
@Chowlett : 네, 그것은 "end marker"반복자를 만드는 (직관적이지 않은) 방법입니다. –