본문 바로가기
2_ 바삭바삭 프로그래밍/C and C++

C, C++ - 파일 입출력

by 준환이형님_ 2011. 1. 7.
알고리즘 시험 답안을 제출 할 때 원래는 파일입출력으로 제출했어야 하는데 파일입출력 은근 어렵고 못외겠고 감독관님 하하하 스스로 컴파일해보시면 잘 되실껍니다 그동안 난 이런식으로 제출 +ㅡ+!

오늘은 그동안 컨트롤CV로만 뵈었던 파일입출력을 맛스타 하겠어요!



출처 : Coder(iphone_dev) (http://cafe.naver.com/codersoft.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=61)
안녕하세요~ 이번에는 C++ STL에서 제공되는 파일 입출력에 대해서 설명하고자 합니다.

사용방법은 C언어와 비슷합니다.

 

우선 사용하시기 위해선 아래와 같은 헤더파일을 인크루드(포함)하셔야합니다.

 

 #include<fstream>

 

이제부터 본격적으로 파고 들어가 봅시다~

C언어에서의 입력용 파일의 열람의 경우 다음과 같습니다.

 

 FILE *f = fopen("INPUT.TXT","r");

 

그렇다면 C++에서의 입력용 파일의 열람의 경우 어떨까요?

조금도 캡슐화되고 간편화 되었습니다.

자 , 보시죠.

 ifstream fin;

 fin.open("INPUT.TXT");

 

if는 만약이라는 영어 단어가 아니라 INPUT FILE의 약자입니다.

그리고 이 객체에 포함되어있는 open 함수에 파일의 이름을 문자열로 전달하면 자동으로 파일이 열리게 됩니다.

 

자 그러면 입력함수는 어떨까요? cin함수의 사용방법과 똑같습니다.

ifstream객체이름>>~입니다.

 int a,b;

 fin>>a>>b;

 

좀더 간단하지 않나요?

c언어에선는 FILE구조체 변수,형식,변수까지 인자값으로 전달해줘야 했었는데, C++에서는 변수명만 인자로 전달해주면 됩니다!

다만 큰수나 형식을 필요로 할때는 C언어 파일입출력을 사용하셔야합니다.

단 아시고 계셔야할 점은 C파일 입출력함수와 C++파일 입출력 메서드(클래스 안에 포함된 함수)는 호환이 되지 않습니다~

 

자 그럼 출력용 파일의 열람의 경우 C에서는 아래와 같이 선언했었습니다.

 FILE *f = fopen("OUTPUT.TXT","w");

 

C++에선 아래와 같이 선언하면됩니다.

 ofstream fout;

 fout.open("OUTPUT.TXT");

of은 if처럼 output File의 약자입니다~

 

자 그럼 출력함수도 cout함수와 비슷하겠죠?

파일객체 명에다가 <<하시면 되시겠습니다.

 fout<<a<<"-"<<b;

 

fprintf함수보다 훨씬 간단합니다~

 

마지막으로 입출력이 모두 가능한 클래스 하나를 소개하고 이번 강의를 마치고자 합니다.

입출력이 모두 가능한 클래스 객체의 선언은 다음과 같습니다.

 fstream finout;

나머지 사용방법은 위와 같습니다.

자, 그럼 여기서 강의를 이만 마치도록 하겠습니다~

 

-예제 소스 하나 첨부합니다-

 #include <fstream>
using namespace std;
int main() {
 int a,b;
 ifstream fin;
 fin.open("INPUT.TXT");
 fin>>a>>b;
 fin.close();

 ofstream fout;
 fout.open("OUTPUT.TXT");
 fout<<a<<"-"<<b;
 fout.close();
}