2017-10-26 12 views
2

나는 SO 게시물 C++ file stream open modes ambiguity을보고있었습니다. fstream의 기본 파일 열기 모드를 알고 싶었습니다. 대답은 말한다 중 하나fstream의 기본 모드

가 무엇 위에서 의미하는 것은 다음과 같은 코드가 정확히 같은 개방 플래그 fstream F ("a.txt이"로 파일을 열고 있다는 것입니다, ios_base ::에서 | ios_base :: 밖으로); ifstream g ("a.txt", ios_base :: out); ofstream h ("a.txt", ios_base :: in);

그래서 내가 올바르게 이해한다면 fstream의 객체를 만들 때 읽거나 쓸 수 있어야합니다. 아래

testFile1.open("text1.txt", ios::out); 

기본 모드 여부 그래서 "파일에 데이터를 기록"데이터를 텍스트 파일을 만듭니다로

그러나 코드 아래

fstream testFile1; 
testFile1.open("text1.txt"); 
testFile1<<"Writing data to file"; 
testFile1.close(); 

그러나 추가 모드로 파일에 데이터를 기록하지 않습니다 구현이 정의되어 있습니까? TDM-GCC-64 툴 체인을 사용하고 있습니다.

+0

'ios :: in' 모드와'ios :: in | ios :: out' 파일이 이미 존재해야합니다. 그렇지 않으면'open' 명령이 실패합니다. –

답변

2

ifstream의 기본 모드는 in입니다. ofstream의 기본 모드는 out입니다. 그래서 그 이름이 그런 식으로 명명됩니다. fstream이 아니며 기본 모드입니다.

예제에는 두 개의 기본값 만 표시되며 명시 적 인수가 누락되어 표시됩니다. fstream f("a.txt", ios_base::in | ios_base::out)은 기본 모드가 없기 때문에 명시 적으로 두 개의 인수를 사용합니다.