이 글에서는 C++를 사용하여 텍스트 파일을 읽는 방법을 알아봅니다. fstream 클래스를 활용하면 파일에 데이터를 쓰고, 저장된 내용을 다시 읽어올 수 있습니다.
입력
tpoint.txt 파일의 초기 내용은 다음과 같습니다.
“Tutorials point.”
출력
Tutorials point.
알고리즘
텍스트 파일을 읽는 전체 과정은 다음 단계로 진행됩니다.
- 파일 스트림 객체 생성 –
fstream클래스의 객체newfile을 생성합니다. - 쓰기 모드로 파일 열기 –
open()메서드를 호출하여 “tpoint.txt” 파일을 쓰기(ios::out) 모드로 엽니다. - 데이터 쓰기 – 파일이 정상적으로 열렸다면 문자열 “Tutorials point”를 파일에 기록한 뒤,
close()메서드로 파일 객체를 닫습니다. - 읽기 모드로 파일 열기 – 같은 파일을 다시 읽기(
ios::in) 모드로 엽니다. - 데이터 읽기 – 파일이 열려 있다면 문자열 변수
tp를 선언하고,getline()메서드를 사용해 파일의 모든 데이터를 한 줄씩 읽어tp에 저장합니다. - 결과 출력 – 문자열
tp에 담긴 내용을 화면에 출력합니다. - 파일 닫기 – 마지막으로
close()메서드를 호출해 파일 객체를 닫고 프로그램을 종료합니다.
예제 코드
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(){
fstream newfile;
newfile.open("tpoint.txt",ios::out); // 파일 객체를 사용해 쓰기 작업을 위해 파일 열기
if(newfile.is_open()) // 파일이 열려 있는지 확인
{
newfile<<"Tutorials point \n"; // 텍스트 삽입
newfile.close(); // 파일 객체 닫기
}
newfile.open("tpoint.txt",ios::in); // 파일 객체를 사용해 읽기 작업을 위해 파일 열기
if (newfile.is_open()){ // 파일이 열려 있는지 확인
string tp;
while(getline(newfile, tp)){ // 파일 객체에서 데이터를 읽어 문자열에 저장
cout << tp << "\n"; // 문자열의 데이터 출력
}
newfile.close(); // 파일 객체 닫기
}
}
실행 결과
Tutorials point
핵심 포인트 정리
fstream은 하나의 객체로 읽기와 쓰기를 모두 처리할 수 있는 범용 파일 스트림 클래스입니다.open()호출 시ios::out은 쓰기 모드,ios::in은 읽기 모드를 의미합니다.is_open()으로 파일이 제대로 열렸는지 반드시 확인하는 것이 안전한 파일 처리의 기본입니다.getline()은 파일 끝(EOF)에 도달할 때까지 한 줄씩 데이터를 읽어오므로,while루프와 함께 사용하면 파일 전체 내용을 손쉽게 출력할 수 있습니다.