코린이의 개발 일지

[c++ 문법] 파일 입출력 - 텍스트 파일 내용 본문

프로그래밍 언어 문법/c++ 문법 정리

[c++ 문법] 파일 입출력 - 텍스트 파일 내용

폴라민 2022. 1. 6. 00:01
반응형

안녕하세요. 오랜만에 돌아온 폴라민입니다.

이번에는 지난학기에 프로젝트 하면서 자주 사용했었던 내용을 한번 들고 와봤습니다.

 

사실 프로젝트할 때 거의 대부분 빠질 수 없는 내용이죠. 파일 입출력. 

어떤 프로그램이든 사용자가 입력한 데이터를 영구 저장해두는 것이 큰 메리트이니까요.

우선 간단한 텍스트 파일 저장 방식부터 보겠습니다.

1. 파일에 내용 저장하기

#include <iostream>
#include <fstream>
using namespace std;

int main() {
	ofstream myfile; //create file stream object variable
	// ofstream은 file에 write하는 stream class이다.
	myfile.open("example.txt");
	myfile << "writing this to a file\n";
	myfile.close();
	return 0;
}

여기서는 fstream이라는 라이브러리를 사용했습니다. 

fstream을 include하였으니 이제 myfile이라는 ofstream 객체를 생성해줍니다.

 

여기서 ofstream은 파일에 내용 입력만 가능합니다.

만약 파일 내용을 읽고 싶다면 ifstream을 사용하면 됩니다. 이 예제도 뒤에서 다루도록 하겠습니다.

 

아무튼 이제 myfile이라는 객체가 만들어 졌으니 내가 만들고 싶은 파일 이름을 적어 파일을 엽니다.

myfile.open("example.txt");

확장자까지 꼭 적어 주도록 합시다.

 

텍스트 파일을 열었으니 이제 파일에 적고 싶은 내용을 적습니다.

myfile << "writing this to a file\n";

 

그 후 파일을 닫아줍니다.

myfile.close();

 

 

자 그럼 파일이 제대로 생성 되었는지 확인 하겠습니다.

저는 visual studio 프로그램을 사용하는 데요

 

위와 같이 프로그램을 작성한 후 실행 하였습니다.
프로그램을 저장했던 위치에 가보면 위와 같이 처음에 저장한 프로젝트 이름이 나옵니다.

프로젝트 폴더를 더블클릭 하면 내부에 프로젝트와 이름이 같은 폴더가 있는데요, 그 폴더에 들어갑니다.

위의 예시에서는 

Project1 -> Project1

이 순서로 들어갑니다. 그러면

 

저희가 저장한 example 텍스트 파일이 잘 생겼네요. 내용은 우리가 입력한대로 되어있는지 볼까요?

저희가 프로그래밍한 데로 잘 저장되었네요.

 

자 그럼 파일을 다시 읽어와 봅시다.

 

2. 파일 내용 읽어오기

// 텍스트 파일 읽기
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main() {
	string line; //string 객체 선언
	ifstream myfile("example.txt");
	if (myfile.is_open())
	{
		while (getline(myfile, line)) { // getline 함수, myfile 에서 문장을 읽어와 line이라는 변수에 저장.
			// getline이 하나의 입력으로 받아들이는 기준은 엔터
			cout << line << endl;
		}
		myfile.close();
	}
	else cout << "Unable to open file";
	return 0;
}

 

읽어오는 문장은 string으로 다루기 위해 string객체를 생성하였습니다.

이번에는 파일에서 내용을 읽어오는 것이니 ifstream객체를 생성합니다.

 

만약 파일이 정상적으로 열리면, 즉 myfile.is_open()의 retrun 값이 true이면 파일 내용을 문장 단위로 읽어오고, 파일이 정상적으로 열리지 않을 경우 예외 처리를 해 두었습니다.

 

한번 실행 시켜 볼까요?

 

아까와 같은 프로젝트에서 소스코드만 바꿔 실행 해 보았습니다.

 

정상적으로 잘 읽어 오네요.

만일 파일 이름을 틀리게 적어 파일을 찾을 수 없으면 어떻게 될까요?

파일 이름을 일부러 틀리게 적어 보았습니다.

이 경우 예외처리를 해두었기 때문에 에러가 발생하지 않고 아래와 같이 결과가 뜹니다.

 

 

규모가 큰 프로젝트에서는 이러한 예외처리가 굉장히 도움이 되겠죠? 

 

오늘은 간단한 파일 입출력에 대해 정리해보았습니다. 

도움이 되셨으면 좋겠네요! 그럼 안녕~~

 

 

 

 

반응형
Comments