이 튜토리얼에서는 C++ 클래스를 활용하여 파일 처리(File Handling)를 구현하는 방법을 알아봅니다.
C++ 파일 처리의 기본 개념
파일 입출력은 프로그램이 데이터를 영구적으로 저장하거나 외부 파일에서 데이터를 불러올 때 반드시 필요한 기능입니다. C++에서는 ifstream(입력 파일 스트림)과 ofstream(출력 파일 스트림)과 같은 스트림 클래스를 통해 파일을 손쉽게 다룰 수 있으며, 파일과 상호작용하는 데 사용되는 기본 함수들은 사용자가 직접 클래스를 정의하여 재구성하거나 확장할 수도 있습니다.
아래 예제에서는 ofstream으로 파일에 데이터를 쓰고, ifstream으로 해당 파일을 다시 읽어 화면에 출력하는 과정을 보여줍니다.
예제 코드
#include <iostream>
#include <fstream>
using namespace std;
int main(){
// ofstream 객체 생성
ofstream fout;
string line;
// sample.txt 파일 열기
fout.open("sample.txt");
// 파일이 정상적으로 열려 있는 동안 반복
while (fout) {
getline(cin, line);
if (line == "-1")
break;
fout << line << endl;
}
fout.close();
// ifstream 객체로 파일 열기
ifstream fin;
fin.open("sample.txt");
// 파일 끝까지 한 줄씩 읽어 출력
while (fin) {
getline(fin, line);
cout << line << endl;
}
fin.close();
return 0;
}
코드 동작 설명
- 파일에 데이터 쓰기:
ofstream객체fout을 생성하고open()함수로sample.txt파일을 엽니다. - 사용자 입력 저장:
getline()으로 사용자 입력을 한 줄씩 받아 파일에 기록합니다. 입력값이-1이면 반복문을 종료합니다. - 파일 닫기:
close()를 호출해 파일 스트림을 안전하게 닫고 리소스를 해제합니다. - 파일 읽기:
ifstream객체fin으로 같은 파일을 연 뒤, 파일이 유효한 동안 한 줄씩 읽어 콘솔에 출력합니다.
마무리
이처럼 C++의 스트림 클래스를 사용하면 복잡한 저수준 파일 API 없이도 직관적인 문법으로 파일 입출력을 처리할 수 있습니다. 실제 프로젝트에서는 파일이 제대로 열렸는지 확인하기 위해 is_open() 검사나 예외 처리를 함께 사용하는 것이 좋습니다.