[포스코x코딩온] 스마트팩토리 2주차 회고 | C++ 파일입출력

이남웅·2023년 4월 6일
0

이제 스마트팩토리가 2주차에 들어갔다. 1주차에는 기본적인 git과 github의 사용법을 배웠고, 바로 C++로 넘어가서 함수와 변수의 개념과 반복문, 조건문 등을 사용하는 방법들을 배웠다. 2주차에서는 프로그램 내에서만 처리하는 것을 넘어서 C++을 통해서 파일 읽고 쓰는 방법과 C++의 객체 지향을 활용할 수 있는 구조체를 배웠다. 이번 글에서는 간단하게 C++에서 파일을 쓰거나 읽는 법을 정리하였다.

1. ifstream

ifstream 함수는 파일의 내용을 불러와 파일 내용을 확인할 수 있는 함수로 fstream 헤더 파일을 불러와 사용하여야 한다.

먼저 파일을 불러오는 예시이다.

#include <iostream>
#include <fstream>


int main(void)
{
	std::ifstream file;		//파일을 담을 변수 선언
    
	file.open("test.txt");	// 텍스트 파일 열기
    
    file.close();			//텍스트 파일 닫기
    
    return(0);
}

파일의 내용을 불러오기 위해서는 불러올 파일을 담을 변수를 먼저 선언해주고, 불러올 파일 이름을 지정해준다. 파일을 사용 후 파일의 사용이 끝났으면 코드내에서 중첩이 될 수 있으므로 파일을 닫아준다.

다음은 파일의 내용을 읽는 방법이다.

#include <iostream>
#include <fstream>


int main(void)
{
	std::ifstream file;		//파일을 담을 변수 선언
    std::string str = "";
    std::string line = "";
    
	file.open("test.txt");	// 텍스트 파일 열기
    
  	file >> str;				//SPACE 기준으로 단어를 읽어 str에 저장
   	std::getline(file, line);	//ENTER 기분으로 문장을 읽어 line에 저장
    
    while (std::getline(file, line))	//텍스트 파일의 모든 내용 출력
        std::cout << line << endl;
    
    file.close();			//텍스트 파일 닫기
    
    return(0);
}

명령어를 보면 구분 문자 기준으로 출력하는 방식이 다르다. 파일의 내용을 각각 단어로 쪼개어 불러오고 싶으면 [file >> str]의 형태로 사용하면 되고, 문장 단위로 불러오고 싶다면 getline 명령어를 사용하면 된다. 여기서 파일의 모든 내용을 출력하고 싶으면 while문을 사용하여 조건식에 getline명령어를 넣어주면 불러들인 문장이 빈 문장(NULL = 0 = FALSE)이 될때까지 반복하여 모든 문장을 출력해준다.

2. ofstream

ofstream 함수는 파일을 생성하여 파일의 내용을 작성할 수 있는 함수로 ifstream과 마찬가지로 fstream 헤더 파일을 불러와 사용하여야 한다. 다음은 ofstream의 기본 사용방법이다.

#include <iostream>
#include <fstream>

int main(void)
{
	std::ofstream file;		//파일을 담을 변수를 선언
    file.open("test.txt");	//텍스트 파일 열기
    
    if(file.fail())		//파일 생성에 실패하였다면 파일 생성 실패로 알림
    	std::cout << "No File" << endl;
    else
    	file << "Hello World!";	//파일의 내용을 작성
    
    file.close();
    
    return (0);
}
       

ifstream 함수와 마찬가지로 파일을 담을 변수를 선언하고 파일을 열거나 만약 없다면 파일을 생성할 이름을 설정해준다. 여기서 만약 쓰기 권한이 없어 파일 생성에 실패할 수 있으므로 [.fail()] 명령어를 조건식과 활용하여 파일이 없거나 파일 생성에 실패하였다면 알려준다. 그 후 입력을 받는 cin함수와 같은 양식으로 파일 내용을 작성해준다.

마지막으로 ifstream과 ofstream에서 공통적으로 사용하는 명령어이다.

.open("파일명");		//파일명에 해당하는 파일 열기
.close();			 //파일 닫기
.is_open();			 //파일 열기에 성공하였다면 true를 반환
.fail();			 //파일 열기를 실패하였다면 true를 반환

이번 시간에는 C++에서 파일입출력의 사용방법을 다루어보았다. 파일입출력은 프로그램을 계속해서 실행할 때 로그 파일 등을 생성하여 프로그램이 실행되는 과정을 기록하거나, 실행중 발생하는 버그등 기록할 때 유용할 것을 생각이 된다. 다음 글에서는 C++의 장점인 객체 지향을 활용할 수 있는 클래스에 대해 다루어보도록 하겠다.

0개의 댓글