1. 파일 생성- 파일도 마찬 가지고 스트림의 일부로 보면 출력 스트림을 이용하여 파일을 만들어
낼 수 있습니다.
2. 파일에 입력 및 출력- 스트림을 열어 둔 이후 스트림관련 연산자를 이용하면 ( <<, >> ) 가능합니다.
예제1) 출력용 파일
- 실행결과
- 파일내용
- 위의 결과와 같이 파일이 생성되었고 입력된 내용이 확인었습니다.
- 실제 파일도 스트림이므로 오버로딩된 연산자를 통해 입출력이 되었음을 알 수 있습니다.
- 실제 객체 생성후 함수를 이용하여 파일을 관리할 수도 있습니다.
예) ofstream file_stream;
file_stream.open("client.dat", ios::out);
- 34번째 줄에서 while의 조건문은 operator void *을 호출하고 이 함수에 의해
상태비트를 보고 True와 False가 나눠집니다.(failbit, badbit, eofbit)
물론 명시적으로는 나타나있지는 않지만 암시적으로 호출이 이루어집니다.
그러므로 eof를 입력하면 0을 반환하여 반복문이 끝나게 되는 것입니다.
- 위 코드에서는 while문이 종료되면 프로그램이 종료되면서 ofstream의 소멸자가 자동적으로
호출되지만 실제 파일을 닫는 멤버함수를이용하여 파일을 닫을 수 있습니다.
예) file_stream.close();
예제2) 파일 읽기 및 출력
- 실행결과
- 파일로 출력과 마찬가지로 스트림을 만든후 읽어들이는 것은 같습니다. 방향만 틀려질 뿐이죠.
2. 파일의 포인터(위치)관련 함수- 항상 파일을 순차적으로만 읽을 수 없기때문에 이를 위해 함수를 제공합니다.
- istream : seekg(seek get), ostream : seekp(seek put)
- 아래 함수는 파일 위치 포인터를 반환합니다.
- istream : tellg(seek get), ostream : tellp(seek put)
예) fileobject.seekg(n); // fileobject의 n바이트로 이동(ios::beg일때)
fileobject.seekg(n, ios::cur); // fileobject의 현재 위치에서 n바이트 뒤로 이동
fileobject.seekg(n, ios::end); // fileobject의 끝에서 n바이트 뒤로 이동
fileobject.seek(0, ios::end); // fileobject의 끝으로 이동