파일 입출력 (File I/O)
파일 입출력은 프로그램이 파일과 데이터를 주고받는 기능을 말합니다. C++에서는 파일 입출력을 위해 <fstream>
헤더를 사용합니다. 주요 클래스에는 ifstream
(입력 파일 스트림), ofstream
(출력 파일 스트림), fstream
(입출력 파일 스트림)이 있습니다.
1. 파일에 데이터 쓰기 (Writing to a File)
파일에 데이터를 쓰기 위해 ofstream
클래스를 사용합니다.
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ofstream outFile("example.txt"); // 파일 열기
if (!outFile) {
cout << "Error opening file for writing." << endl;
return 1;
}
outFile << "Hello, World!" << endl; // 파일에 데이터 쓰기
outFile << "This is a test file." << endl;
outFile.close(); // 파일 닫기
return 0;
}
2. 파일에서 데이터 읽기 (Reading from a File)
파일에서 데이터를 읽기 위해 ifstream
클래스를 사용합니다.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ifstream inFile("example.txt"); // 파일 열기
if (!inFile) {
cout << "Error opening file for reading." << endl;
return 1;
}
string line;
while (getline(inFile, line)) { // 파일에서 한 줄씩 읽기
cout << line << endl;
}
inFile.close(); // 파일 닫기
return 0;
}
3. 파일에 데이터 추가 (Appending to a File)
기존 파일에 데이터를 추가하기 위해 ofstream
클래스의 ios::app
모드를 사용합니다.
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ofstream outFile("example.txt", ios::app); // 파일 열기 (추가 모드)
if (!outFile) {
cout << "Error opening file for appending." << endl;
return 1;
}
outFile << "Appending a new line." << endl; // 파일에 데이터 추가
outFile.close(); // 파일 닫기
return 0;
}
예제 문제
문제 1: 사용자 입력을 파일에 저장하는 프로그램 작성
사용자로부터 여러 줄의 텍스트를 입력받아 파일에 저장하는 프로그램을 작성하세요. 사용자가 "END"를 입력하면 입력을 중지하고 파일을 닫습니다.
해설:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ofstream outFile("user_input.txt");
if (!outFile) {
cout << "Error opening file for writing." << endl;
return 1;
}
string line;
cout << "Enter text (type 'END' to stop):" << endl;
while (getline(cin, line)) {
if (line == "END") {
break;
}
outFile << line << endl;
}
outFile.close();
return 0;
}
이 프로그램은 사용자로부터 여러 줄의 텍스트를 입력받아 파일에 저장하고, "END"를 입력하면 파일을 닫습니다.
문제 2: 파일에서 데이터를 읽어와 콘솔에 출력하는 프로그램 작성
파일에서 데이터를 읽어와 콘솔에 출력하는 프로그램을 작성하세요. 파일 이름은 사용자가 입력합니다.
해설:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
string filename;
cout << "Enter filename to read: ";
cin >> filename;
ifstream inFile(filename);
if (!inFile) {
cout << "Error opening file for reading." << endl;
return 1;
}
string line;
while (getline(inFile, line)) {
cout << line << endl;
}
inFile.close();
return 0;
}
이 프로그램은 사용자가 입력한 파일 이름을 열어 데이터를 읽어와 콘솔에 출력합니다.
문제 3: 파일에 데이터를 추가하는 프로그램 작성
사용자로부터 추가할 텍스트를 입력받아 파일에 추가하는 프로그램을 작성하세요. 사용자가 "END"를 입력하면 입력을 중지하고 파일을 닫습니다.
해설:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ofstream outFile("append_example.txt", ios::app);
if (!outFile) {
cout << "Error opening file for appending." << endl;
return 1;
}
string line;
cout << "Enter text to append (type 'END' to stop):" << endl;
while (getline(cin, line)) {
if (line == "END") {
break;
}
outFile << line << endl;
}
outFile.close();
return 0;
}
이 프로그램은 사용자로부터 추가할 텍스트를 입력받아 파일에 추가하고, "END"를 입력하면 파일을 닫습니다.
다음 단계
22일차의 목표는 C++의 파일 입출력에 대해 학습하는 것이었습니다. 다음 날부터는 간단한 콘솔 게임 프로젝트를 시작할 것입니다.
내일과 그 다음 날은 "프로젝트: 간단한 콘솔 게임 만들기"에 대해 다룰 예정입니다. 질문이나 피드백이 있으면 댓글로 남겨 주세요!
'-----ETC----- > C++ 마스터 시리즈' 카테고리의 다른 글
[C++ 마스터] Day 24: 프로젝트 - 간단한 콘솔 게임 만들기 (2) (0) | 2024.08.01 |
---|---|
[C++ 마스터]Day 25: 스마트 포인터 (unique_ptr, shared_ptr) (0) | 2024.08.01 |
[C++ 마스터] Day 23: 프로젝트 - 간단한 콘솔 게임 만들기 (1) (0) | 2024.08.01 |
[C++ 마스터] Day 20: STL 벡터와 리스트 (0) | 2024.08.01 |
[C++ 마스터] Day 21: STL 맵과 셋 (0) | 2024.08.01 |