fstream

2025. 3. 31. 17:16C++

fstream 클래스는 파일 입출력 스트림을 다루는 클래스이며, 다양한 함수들이 제공되어 파일을 읽고 쓰고, 위치를 설정하는 등의 작업을 할 수 있다. fstream은 ifstream(입력용)과 ofstream(출력용)을 확장한 클래스이므로, 이들의 기능을 모두 포함한다.

 

1. 파일 열기 및 닫기

open( ) 파일 열기

  • std::ios::in: 읽기 모드로 파일 열기.
  • std::ios::out: 쓰기 모드로 파일 열기.
  • std::ios::app: 추가 모드로 파일 열기 (파일 끝에 데이터 추가).
  • std::ios::ate: 파일 끝으로 이동하여 데이터를 추가하거나 수정.
  • std::ios::trunc: 파일을 열 때 기존 내용을 삭제하고 새로 작성.
file.open("filename", std::ios::in | std::ios::out);

close( ) 파일 닫기

file.close();

 

2. 파일 위치 관련 함수

seekg( ) 읽기 위치 설정

file.seekg(0, std::ios::beg);		// 파일의 시작으로 이동
file.seekg(0, std::ios::cur);		// 현재 위치에서 상대적 이동
file.seekg(0, std::ios::end);		// 파일의 끝으로 이동

seekp( ) 쓰기 위치 설정

file.seekp(0, std::ios::beg);		// 파일의 시작으로 이동
file.seekp(0, std::ios::cur);		// 현재 위치에서 상대적 이동
file.seekp(0, std::ios::end);		// 파일의 끝으로 이동

tellg( ) 현재 읽기 위치 반환

std::streampos pos = file.tellg();

tellp( ) 현재 쓰기 위치 반환

std::streampos pos = file.tellp();

 

3. 파일 입출력 함수

getline( ) 파일에서 한 줄을 읽기

std::string line;
std::getline(file, line);

put( ) 파일에 한 문자를 쓰기

file.put('A');

get( ) 파일에서 한 문자 읽기

char ch;
file.get(ch);

write( ) 파일에 데이터를 지정된 크기만큼 쓰기(바이너리 데이터를 쓸 때 유용)

char data[] = "Hello, World!";
file.write(data, sizeof(data));

read( ) 파일에 지정된 크기만큼 데이터를 읽기

char buffer[100];
file.read(buffer, sizeof(buffer));

 

4. 파일 상태 확인 함수

good( ) 스트림이 정상적으로 동작하는지 확인

if (file.good()) {
    // 파일 상태가 정상일 때 실행할 코드
}

eof( ) 파일의 끝에 도달했는지 확인

if (file.eof()) {
    // 파일 끝에 도달한 경우
}

 

fail( ) 스트림 작업이 실패했는지 확인

if (file.fail()) {
    // 파일 작업 실패 시 실행할 코드
}

bad( ) 스트림 상태가 매우 나쁜 경우 확인(파일 손상시)0

if (file.bad()) {
    // 파일 상태가 나쁠 경우
}

 

5. 플래그 설정

seft( ) 스트림 플래그 설정(ex: ios::fixed, ios::scientific 등) 출력 형식 지정

file.setf(std::ios::fixed);

unsetf( ) 설정된 플래그 해제

file.unsetf(std::ios::fixed);

 

6. 형식 지정 관련 함수

width( ) 출력할 최소 너비 지정

file.width(10);
file << 42;  // 최소 10자리로 출력

precision( ) 실수 출력시 소수점 이하 자리수 지정

file.precision(2);
file << 3.14159;  // 소수점 이하 2자리로 출력

fill( ) 출력할 때 빈 공간 채울 문자 지정

file.fill('*');
file << 42;  // "****42"로 출력

 

'C++' 카테고리의 다른 글

부동소수점 숫자  (0) 2025.04.29
Orthodox Canonical Form  (0) 2025.04.29
참조자(Reference)  (0) 2025.03.27
union  (0) 2025.03.26
SSO  (0) 2025.03.26