ifstream을 사용하여 파일을 열 때 C에서 오류 메시지에 액세스하는 것이 어려울 수 있습니다. 이 문제를 해결하기 위해 오류 원인을 추출하는 기술을 자세히 살펴보겠습니다.
파일 열기 오류를 확인하는 표준 방법은 다음과 같습니다.
ifstream f; f.open(fileName); if ( f.fail() ) { // I need error message here, like "File not found" etc. - // the reason of the failure }
C에서는 시스템 호출이 실패하면 전역 변수 errno를 업데이트합니다. 따라서 errno를 사용하여 ifstream 열기 실패에 대한 추가 세부 정보를 얻을 수 있습니다.
ifstream f; f.open(fileName); if ( f.fail() ) { cerr << "Error: " << strerror(errno); }
errno는 전역 변수입니다. 다중 스레드 애플리케이션에서는 주의가 필요합니다. f.open() 실행과 errno 사용 사이에 다른 시스템 호출로 인해 오류가 발생하면 오류 메시지의 정확성에 영향을 미칠 수 있습니다.
POSIX- 호환 시스템에서 errno는 스레드 로컬입니다. 이는 한 스레드에서 errno를 설정해도 다른 스레드의 값에 영향을 미치지 않음을 의미합니다.
원래 e.what()은 더 많은 것 같았습니다. C - 오류 정보 검색에 적합한 접근 방식입니다. 그러나 이 함수는 구현별 문자열을 반환합니다. G의 libstdc에서 이 문자열은 실패에 대한 의미 있는 정보를 거의 제공하지 않는 경우가 많습니다.
위 내용은 `ifstream`이 파일을 열지 못할 때 오류 메시지를 어떻게 검색할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!