2014-04-09 5 views
0
#include <iostream> 
#include <fstream> 

int main() 
{ 
    using namespace std; 

    /* Open a file and read it*/ 

    ofstream file_obj; 

    file_obj.open("file1.txt",ios::in| ios::out | ios::app); 

    if(file_obj.is_open()) 
    { 
     printf("\n File opened successfully "); 
    } 
    else 
    { 
     printf("\n Error occured in opening the file"); 
    } 

    return 0; 
} 

그것의 출력을 제공입력, 출력, 추가 모드로 C++에서 파일을 여는 것이 왜 오류가 발생합니까?

오류는 파일을 여는 발생.

하지만 ios를 삭제하면 잘 작동합니다.

왜 이러한 조합을 사용할 수 없습니까?

+1

아니요, 유효한 조합이 아닙니다 (fstream의 경우조차도). XOR을 append 용으로 읽거나 둘 다 읽을 수있는 파일을 열 수 있습니다. 'fstream' ('ofstream'은 출력 전용이므로)을'in'과'out'으로 열고 파일의 끝으로 이동하십시오. –

+0

@Cyber하지만 나에게있어서 ios : in과 ios : out은 잘 동작했다. –

+1

오류의 원인은 무엇입니까? (힌트 :'errno'를 검사 해보십시오.) 여러분의 코드는 VC++과 g ++ (그리고 다른 사람들의 의견에도 불구하고, 그것은 완벽하게 합법적입니다. –

답변

0

ofstream 클래스는 출력 (파일 쓰기) 전용이므로 - 'o'입니다. 대신 fstream을 사용하십시오. 입력 및 출력이 모두 허용됩니다.

+0

'ios :: in'과'ios :: app'는'fstream'에 대해서도 유효한 조합이 아닙니다 (C++ 98에서는 C++ 11에서 허용됩니다). –

+2

이 답변과 의견은 모두 잘못되었습니다. –

+0

@Adriano 흠 그의 코드를 컴파일하려고 시도했지만 정상적으로 작동했습니다. 아마 그는 file1.txt를 그의 프로젝트 폴더 대신 Debug 폴더에 넣었을 것입니다. –