이 글에서는 C++ 프로그램을 작성하여 텍스트 파일에 저장된 데이터를 읽어 오는 방법을 알아봅니다. 파일 입출력은 fstream 클래스를 활용하면 간단하게 구현할 수 있습니다.
입력
tpoint.txt 파일의 초기 내용: "Tutorials point."
출력
Tutorials point.
알고리즘
프로그램의 동작 순서는 다음과 같습니다.
fstream클래스의 객체 newfile을 생성합니다.open()메서드를 호출하여 "tpoint.txt" 파일을 쓰기 모드(ios::out)로 엽니다.- 파일이 정상적으로 열렸다면 문자열 "Tutorials point"를 파일에 기록한 뒤,
close()메서드로 파일 객체를 닫습니다. - 다시
open()메서드를 호출하여 같은 파일을 읽기 모드(ios::in)로 엽니다. - 파일이 열려 있다면 문자열 변수 tp를 선언하고,
getline()메서드를 사용해 파일의 모든 데이터를 한 줄씩 읽어 tp에 저장합니다. - tp에 저장된 데이터를 화면에 출력합니다.
- 모든 작업이 끝나면
close()메서드로 파일 객체를 닫습니다.
예제 코드
아래는 위 알고리즘을 실제로 구현한 C++ 예제 코드입니다.
#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
코드 설명
- 쓰기 단계:
ios::out모드로 파일을 열면 해당 파일에 데이터를 기록할 수 있습니다.is_open()으로 파일이 성공적으로 열렸는지 반드시 확인한 후 데이터를 삽입하는 것이 안전합니다. - 읽기 단계:
ios::in모드로 파일을 다시 열어 내용을 읽어 옵니다.getline()함수는 파일에서 한 줄씩 데이터를 읽어 문자열 변수에 저장하며, 더 이상 읽을 줄이 없으면false를 반환하므로while루프와 함께 사용하면 파일 전체를 손쉽게 처리할 수 있습니다. - 자원 해제: 작업이 끝난 후에는 반드시
close()를 호출하여 파일을 닫아야 시스템 자원 누수를 방지할 수 있습니다.