본문 바로가기

교육 노트/C++ 기초강의

[C++ 때려 잡기] C++ 기초강의 3 파일입출력 기초

2018/08/23 - [교육 노트/C++ 기초강의] - C++ 기초 강의 OT




지금까지 만든 프로그램들은 프로그램을 종료하면 모든 데이터가 날라가는 형식이었다.

그러나 우리가 사용하는 다양한 프로그램들을 대부분 저장, 불러오기 기능을 가지고있고

이를 통하여 게임랭킹, 각종 정보들을 프로그램을 껏다 켜도 유지되도록 할 수 있다.


이렇게 데이터 저장되는것을 파일이라고 부른다.

가장 대표적인 파일이 메모장에서 사용하는 *.txt 파일이다.




1. 파일



기존 프로그램이 대표적으로 exe 확장자를 가지고 있고 실행하면 정보를 메모리 (RAM) 에 기록한다.


RAM 은 대표적인 휘발성 메모리이므로 데이터를 영구적으로 저장 할 수 없다.

반면 파일의 정보는 하드디스크, SSD등 보조 기억 장치에 저장되어 영구히 보관할수있다.


파일입출력은 RAM에있는 정보들을 하드에 옮기거나 반대로 하드의 정보를 RAM에 옮겨 프로그램에서 사용할수있도록 하는것이다.



2. 파일입출력

파일입출력을 위한 기능들은
fstream 파일에 정의 되어있다

fstream파일을 인클루드 해주자


해당 파일을 인클루드 하면

새로운 자료형인 ofstream 과 ifstream을 사용할수있다.


ofstream VS ifstream
ofstream : 파일로 output 할 때
ifstream : 파일에서 input을 받아올 때


ofstream 의 사용법은 다음과 같다.

ofsteam 형식의 일종의 변수를 하나 만든다

여기서는 편의상 fout 이라고 정의하였다.

그후 변수명 뒤에 점을 찍으면 다양한 함수가 나오는데 그중 open함수를 사용하여 하드디스트에 해당 이름으로 파일을 만들수있다.

참고로 파일 명만 작성하고 ctrl+f5로 프로그램을 생성하면 기본경로는 해당 프로젝트의 소스코드가 있는 폴더에 생긴다


ps. 왜 점을 찍는지는 나아아아중에 배운다 일단 점을찍으면 파일입출력 기능을 사용할수있다고 생각하고있으면된다.


그다음은 cout 처럼 사용하면 된다.



여기서 close 를 생략했는데 파일 사용이 끝났으면

fout.close() 등으로 사용이 끝났다는것을 알려주자.


ps. '\t' 는 탭을 의미하고 '\n'은 endl과 똑같은 의미이다.



그다음은 ifstream이다

ifstream 사용법도 별반 다르지 않은데


다음과 같이 이미있는 파일을 open을 통하여 열고

cin처럼 사용하면 된다.

참고로 cin처럼 띄어쓰기나 탭, 엔터등으로 구분되어 들어간다

ofstream에서 1,2,3,4 를 다 띄어놓아 저장하였기 때문에 각각 따로따로 number에 들어가게된다.

만약 ofstrean 에서 1 과 2를 띄우지 않고 저장했으면 12 로 저장되고 ifstream에서 12라는 숫자로 입력받을것이다.


ifstream역시 다 사용했으면 close를 해주자




즉 파일입출력의 흐름은 다음과 같다.




뭐가쓰는거고 뭐가 입력받는거지  헷갈리기 쉬운데

다음과 같이 생각하면 쉽다






지금까지는 << , >> 을 통하여 데이터를 입력받았다.

그러나  <<, >> 로 정보를 때와서 가져오거나 쓰는것이 아니라

한글자씩 컨트롤 하고싶을때가 있을것이다.


그럴때를 위하여 get, put 함수를 제공한다.




파워포인트캡쳐라 다 대문자로 되어있는데 대문자 소문자로 바꿔주기를 바란다 ㅜ




지금까지 배운내용을 통하여 파일입출력을 사용해보고


파일에 저장된 내용을 그대로 콘솔창에 출력해보자



또한

다음과같이 네모나게 출력해보도록 해보자 (프로그램 참조)




3. getline

위에서 한글자씩 가져오는걸 했는데

반대로 한줄씩 가져고오고 싶을수도 있다

그럴때 사용하는것이 getline함수이다.


getline함수를 이용하면 문자열에 한줄씩 혹은 특정 구분자를 정하여 해당 구분자가 나올때까지의 문자열을 가져올수있다.









실습

1. 기존의 가위바위보게임에서 user.txt파일에서 유저 정보를 가져와 사용자 확인기능을 만들고 유저이름과 점수를 파일로 저장하라
2. 카카오톡의 경우 모바일에서 pc로 톡방 내용을 내보낼수가 있다.

해당 내용을 메모장으로 열고 다른이름으로 저장하고 인코딩 타입을 ansi로 바꾼후

해당 파일을 분석하는 카카오톡 분석기를 만든다.

각각 사람이 특정단어를 얼마나 사용했는지 분석하는 프로그램을 제작한다 (프로그램 참조)


728x90