본문 바로가기
Programming/C, C++

C++ 파일 입출력 fstream ifstream ofstream (char배열, string)

by Dev_카페인 2022. 12. 14.
반응형

[C++] 파일 입출력 fstream ifstream ofstream (char배열, string)

 

띄어쓰기 포함 쓰기 방법은 한 줄 입력 받는 것이다

char배열을 써도 되고 편리한 string을 사용해도 된다.

#include <iostream> #include <fstream> 파일 입출력 헤더파일 #include <string> 문자열 헤더파일

만약 입력이나 출력만 할 경우

#include <ifstream> 입력 (Input File Stream)

#include <ofstream> 출력 (Output File Stream)

//방법 1
ofstream file;
file.open(filePath, ios::out);
//방법 2
ofstream file(filePath, ios::out) 

파일을 열지 못했을 때 예외처리

// 예외처리 1
if(file.fail()) cout << "ERROR" << endl;

// 예외처리 2
if(!file.is_open()) cout << "ERROR" << endl;
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

#define FILE_PATH "test.txt"  // 경로 지정해서 변경
// 절대경로 기입 안할 시 프로젝트 폴더에 들어감

void WriteFile(string filePath);
void ReadFile(string filePath);
void AppendFile(string filePath);

int main()
{
	//WriteFile(FILE_PATH);
	ReadFile(FILE_PATH);
	//AppendFile(FILE_PATH);

	return 0;
}

// 파일 쓰기
void WriteFile(string filePath)
{
	ofstream file;
	file.open(filePath, ios::out);
	// ofstream file(filePath, ios::out) 똑같

	string str;
	while (true)
	{
		cout << "-1 입력시 쓰기 종료" << endl;
		cout << "입력 : ";
		getline(cin, str);
		if (str == "-1")
			break;
		file << str << endl;
	}
}

// 파일 읽기
void ReadFile(string filePath)
{
	ifstream file;
	file.open(filePath, ios::in);
	
	string str;
	//char line[256] = {};
	//while (file.getline(line, 256))	// char 배열로 읽어오기
	while (getline(file, str))
	{
		cout << str << endl;
	}
}

// 파일 끝에 추가
void AppendFile(string filePath)
{
	ofstream file;
	file.open(filePath, ios::app);

	string str;
	while (true)
	{
		cout << "-1 입력시 쓰기 종료" << endl;
		cout << "입력 : ";
		getline(cin, str);
		if (str == "-1")
			break;
		file << str << endl;
	}
}

file.close();

스코프가 끝나면 자동으로 자원을 해지해 주지만 명시적으로 작성해주면 좋다.

반응형