본문 바로가기

예전/C, C++

[C++] C++ 스타일 파일 입출력


C++ 스타일 파일 입출력



C++스타일 파일 입출력은 C스타일 보다 쉽다.


사실 C보다 쉬운거라기보단 C스타일 파일입출력을 이해한 사람이면 누워서 떡먹기이기 때문에 쉽다는 말이다.



1. 파일에 쓰기




C++파일입출력을 하려면 먼저 #include <fstream> 를 헤더로 추가해야 한다.



파일을 저장하기 위해선 ofstream 이라는 파일입출력 변수를 쓰고 파일 명 (fout) 을 적는다.



파일을 선언한 후에 파일을 열어준다.

fout.open("Info.txt");

이 안의 "Info.txt" 은 임의로 작성한 것으로 Info라는 이름을 가진 txt파일을 만들라는 것이다.



그리고 적을 때는 fout으로 적는다.

 fout<<pName<<"\t"<<nMoney<<"\t"<<nBad<<endl; 

cout 과 비슷 한 모양이다.



파일을 저장할땐 "\t" 즉 탭으로 반드시 구분해야 한다.

그렇지 않으면 파일을 읽어들일때 어디가 구분점인지 몰라 문제가 발생하기 때문이다.

또한 이때 변수들은 반드시 초기화 되어있거나 값이 들어있어야 한다.

그렇지 않으면 쓰레기 값이 들어가거나 오류가 발생한다.



그리고 파일을 꼭! 닫아준다.


 if(fout.is_open()==true) // 파일 닫기

 {

  fout.close();

 }


fout이라는 파일을 is_open() 이라는 함수를 써서 체크한다. 만약 fout이 true 즉, 열려있다면

close() 라는 함수를 써서 닫는다. 는 말이다.




2. 파일 읽기




파일을 열 때에는 ifstream 이라는 파일입출력 변수를 쓰고, 파일 명 (fin)을 쓴다.


파일을 호출한 후

fin.open("Info.txt"); 

그 파일을 연다. 


 if(fin.is_open()==false) // 파일이 존재하는지 확인

 {

  cout << "현재 정보가 없습니다."<<endl;

 }


파일 열기를 할 때는 꼭 파일이 열려있는지 존재 하는지 확인 해야한다.



그리고 

fin>>cName>>nMoney>>nBad; 

파일을 읽어 들인다. fin 과 비슷한 모양이다.


아까 파일 저장할때 "\t" 으로 구분해 놓아서, 읽어 들일때는 저렇게만 읽어들이면 된다.

이것으로 파일입출력 함수가 \t혹은 띄어쓰기를 통해 data를 구분한다는 것을 알 수 있다.



 if(fin.is_open()==true) // 파일 닫기

{

  fin.close();

 }

또 역시 파일을 꼭!!!!!!!!!!! 닫아준다.



파일을 닫지 않는다고해서 바로 문제가 발생하는 것은 아니다.

하지만 큰 프로그램을 작성할때 파일을 제대로 닫지않으면, 파일에 잘 저장되지 않는 것은 경험해보지 않으면 모른다.


그러니 미리 파일을 닫는 습관을 익혀두라는 것이다.