fstream
2025. 3. 31. 17:16ㆍC++
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 |