iOS :: C ++ 코드를 컴파일하는 동안 NOCREATE 오류
문제
RHEL 5.0의 C ++로 작성된 패키지를 컴파일하는 동안. 다음 오류가 발생합니다.
> 오류 : nocreate
회원이 아닙니다 std::ios
소스 코드는 다음과 같습니다.
ifstream tempstr (
argv[4]
,ios::in
|ios::nocreate
);
나는 시도했다
#g ++ -o -wno -deprecatedu003Cfile.cpp> -영형u003Cfile>
만큼 잘:
#g ++ -o -ou003Cfile>
해결책을 제안하십시오.
해결책
ios::nocreate
표준 C ++의 일부가 아닙니다. 무엇을 기대하고 있습니까?
편집 : Google에서 파일이 아직 존재하지 않으면 파일이 생성되는 것을 방지하기위한 것 같습니다. 이것은 어쨌든 ifstreams의 기본값이므로 다음과 같이 말할 수 있습니다.
ifstream f( filename );
if ( ! f.is_open() ) {
// open failed - probably because infput file does not exist
}
다른 팁
읽기 모드에서 파일 열기 (ios::in
) 존재하지 않으면 생성하지 않습니다. 비표준을 떠날 수 있습니다 nocreate
. 이후 in
기본값입니다 ifstream
:
ifstream tempStr (argv[4]);
fopen 및 o_creat | o_excl을 사용하여 파일 핸들로 파일을 열고 사용하여 스트림으로 변환 할 수 있습니다.
__gnu_cxx::stdio_filebuf<char> filebuf(posix_handle, std::ios::out);
ostream os(&filebuf);
이것은 정의 된 비 표준 확장을 사용합니다. 누군가가 더 나은 솔루션을 가지고 있다면 정말 알고 싶습니다!
제휴하지 않습니다 StackOverflow