문제

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);

이것은 정의 된 비 표준 확장을 사용합니다. 누군가가 더 나은 솔루션을 가지고 있다면 정말 알고 싶습니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top