C++ 파일 입출력 마스터: 열기, 읽기, 쓰기, 닫기 완벽 가이드
C++에서 파일 처리란?
파일 처리를 통해 프로그램 데이터를 저장 장치에 영구 저장할 수 있습니다. 프로그램 출력을 파일로 보내면 해당 데이터에 대한 추가 조작, 분석, 아카이빙이 가능해집니다.
스트림은 문자의 연속적인 소스 또는 대상을 나타내는 추상화입니다. C++은 파일과 원활하게 작업할 수 있는 클래스와 함수를 제공하는 강력한 fstream 라이브러리를 제공합니다.
이 튜토리얼에서 배울 내용:
- C++ 파일 처리의 정의
fstream 라이브러리와 그 클래스들
- 다양한 모드로 파일 열기
- 파일 안전하게 닫기
- 파일에 데이터 쓰기
- 파일에서 데이터 읽기
fstream 라이브러리
fstream 라이브러리는 세 가지 핵심 클래스를 제공합니다:
- ofstream – 파일 생성 및 쓰기를 위한 출력 스트림
- ifstream – 기존 파일 읽기를 위한 입력 스트림
- fstream – 입력과 출력 연산을 모두 지원하는 결합 스트림
아래는 빠른 시각적 참조입니다:
이 클래스들을 사용하려면 fstream 헤더를 포함하고, 콘솔 출력도 필요하다면 iostream도 포함하세요.
파일 열기 방법
파일 작업 전 파일을 열어야 합니다. 쓰기 전용은 ofstream, 읽기 전용은 ifstream, 둘 다는 fstream을 사용하세요. 각 클래스는 open() 멤버를 제공합니다:
open(file_name, mode);
- file_name – 대상 파일의 경로 또는 이름
- mode – 선택 사항; 접근 타입 지정. 일반적인 플래그:
| 값 | 설명 |
| ios::app | 추가 모드 – 쓰기는 파일 끝에 추가 |
| ios::ate | 열고 즉시 끝으로 이동 |
| ios::in | 읽기용으로 열기 |
| ios::out | 쓰기용으로 열기 |
| ios::trunc | 기존 파일을 길이 0으로 자르기 |
여러 플래그는 비트 OR 연산자(|)로 결합 가능합니다.
예제 1: 파일 생성
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream my_file;
my_file.open("my_file", ios::out);
if (!my_file) {
cout << "File not created!";
} else {
cout << "File created successfully!";
my_file.close();
}
return 0;
}
출력:

실행 중인 프로그램 스크린샷:

코드 분석:
- 콘솔 I/O용
iostream 포함
- 파일 스트림용
fstream 포함
- 간결성을 위해
std 네임스페이스 사용
my_file이라는 fstream 객체 인스턴스화
- 쓰기 모드(
ios::out)로 파일 열기
- 성공적 열기 확인; 실패 시 보고
- 성공 시 확인 메시지 출력 후 파일 닫기
- 정상 종료를 나타내기 위해
0 반환
파일 닫기 방법
C++은 프로그램 종료 시 스트림을 자동으로 플러시하고 닫지만, 마지막 작업 후 명시적으로 파일을 닫는 것이 좋은 관행입니다.
close() 멤버는 fstream, ofstream, ifstream에서 사용 가능:
void close();
파일에 쓰기 방법
쓰기 작업은 스트림 삽입 연산자(<<)를 사용합니다. 저장할 텍스트는 따옴표로 묶거나 직접 스트리밍해야 합니다.
예제 2: 텍스트 쓰기
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream my_file;
my_file.open("my_file.txt", ios::out);
if (!my_file) {
cout << "File not created!";
} else {
cout << "File created successfully!";
my_file << "Guru99";
my_file.close();
}
return 0;
}
출력:

코드 스크린샷:

코드 분석:
- 필요한 헤더 포함
fstream 객체 생성
- 대상 파일을 쓰기 모드로 열기
- 파일 스트림 검증
- 문자열 "Guru99"를 파일에 삽입
- 스트림 닫기
0 반환
파일에서 읽기 방법
읽기는 스트림 추출 연산자(>>)를 사용하며 cin과 같습니다. 데이터는 적절한 타입의 변수로 스트리밍됩니다.
예제 3: 문자 읽기
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream my_file;
my_file.open("my_file.txt", ios::in);
if (!my_file) {
cout << "No such file";
} else {
char ch;
while (1) {
my_file >> ch;
if (my_file.eof()) break;
cout << ch;
}
}
my_file.close();
return 0;
}
출력:

실행 중인 코드 스크린샷:

코드 분석:
iostream과 fstream 포함
- 읽기용(
ios::in)으로 파일 열기
- 존재 여부 확인; 없으면 사용자에게 알림
- EOF 도달할 때까지 문자 단위 읽기
- 각 문자를 콘솔에 출력
- 스트림 닫기
0 반환
요약
- 파일 처리는 프로그램 출력을 영구 저장소에 지속시킵니다.
- 스트림은 입출력 장치를 추상화합니다.
fstream 라이브러리는 모든 일반적인 파일 작업 클래스를 제공합니다.
- 소스 상단에 항상
<fstream> (필요 시 <iostream>) 포함
- 적절한 모드로 파일 열고, 원하는 작업 수행, 스트림 닫기