이 글에서는 한 텍스트 파일의 내용을 다른 텍스트 파일 끝에 추가(append)하는 C++ 프로그램을 소개합니다. C++에서는 <fstream> 헤더가 제공하는 파일 스트림 클래스를 활용하면 파일 입출력 작업을 간단하고 효율적으로 처리할 수 있습니다.
입력 예시
a.txt 파일의 내용: "Tutorials" a1.txt 파일의 내용: "point"
출력 결과
Tutorialspoint
알고리즘
프로그램의 전체적인 동작 흐름은 다음과 같습니다.
fstream클래스 객체를 정의합니다.- 입력 파일 스트림 객체
fin으로 원본 파일 a.txt를 엽니다. - 출력 파일 스트림 객체
fout으로 대상 파일 a1.txt를 append 모드(ios::app)로 엽니다. - 파일이 존재하지 않으면 "파일을 찾을 수 없습니다"라는 메시지를 출력합니다.
- 파일이 정상적으로 열린 경우,
fin의 내용을fout에 이어서 기록합니다. - 대상 파일을 읽기 모드로 다시 연 뒤, 저장된 내용을 화면에 출력합니다.
예제 코드
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
int main() {
fstream f;
ifstream fin;
fin.open("a.txt");
ofstream fout;
fout.open("a1.txt", ios::app);
if (!fin.is_open()) {
cout << "파일을 찾을 수 없습니다";
} else {
fout << fin.rdbuf();
}
string word;
f.open("a1.txt");
while (f >> word) {
cout << word << " ";
}
return 0;
}코드 설명
- 입력 스트림 준비:
ifstream객체fin으로 원본 파일 a.txt를 읽기 모드로 엽니다. - append 모드로 열기:
ofstream객체fout을ios::app플래그와 함께 열면 기존 내용을 지우지 않고 파일 끝에 새 데이터를 덧붙일 수 있습니다. - 파일 열기 확인:
fin.is_open()으로 파일이 제대로 열렸는지 검사하고, 실패한 경우 오류 메시지를 출력합니다. - 내용 복사:
fout << fin.rdbuf();구문은 스트림 버퍼 전체를 한 번에 복사하므로 반복문 없이도 파일 내용을 빠르고 간결하게 추가할 수 있습니다. - 결과 확인: 마지막으로 대상 파일 a1.txt를 읽기 모드로 열어 단어 단위로 내용을 출력합니다.
실행 결과
a.txt의 "Tutorials"가 a1.txt의 "point" 뒤에 추가되어 최종적으로 다음과 같은 결과가 출력됩니다.
Tutorialspoint