반응형


http://cafe.naver.com/sunschool/69




표준 입출력 처리


 

iostream 클래스는 전역적으로 생성되어 사용할 수 있는 4개의 입출력을 처리하는 전역 오브젝트를 제공한다.

 

cin 오브젝트

cin오브젝트는 키보드로 부터 문자를 읽어들인다. 추출연산자 ">>"을 사용한다.

cin >> name >> address;

 

istream_withassaign클래스의 미리 정의된 오브젝트이다. cin전역 오브젝트는 다음과 같이 선언되어 있다.

extern _CRTIMP istream_withassign cin;

 

16진수나 8진수 값을 입력받기위해 조작자(manipulator)을 사용한다.

hex : 16진수로 입력

oct  : 8진수로 입력

dec : 10진수로 입력

ex) cin >> hex >> a >> oct >> b;

cout 오브젝트

화면에 문자를 출력한다. 삽입연산자 "<<"을 사용한다.

cout << "안녕하세요!!!!";

조작자(manipulator)

             endl  : 개행문자를 삽입한후 버퍼를 플러쉬한다.

             ends : 널문자를 삽입한다.

             flush : 출력버퍼를 플러쉬한다.

폭지정

             width() 멤버함수를 호출한다.

             ex)

cout << “%%%%”;

             cout.width(20);

         cout << “100” << endl;

             setw 조작자를 사용한다.

              cout << setw(10) << “This” << setw(10) << “is” << setw(20) << “Test” << endl;

소수점 처리

             부동소수점에 대해서는 기본적으로 6자리까지 표현된다.  소수점 표현방법을 변경하기 위해서는 setprecision 조작자를 사용한다.

cout << setprecision(1) << 100.1234;  // 소수점 이하 한자리만 표시한다.

기본적인 표시법은 과학기술계산용(ios::scientific)표기법을 사용한다. 이러한 표기법을 사용하지 않으려면 “ios::fixed”를 매개변수로 setioflags 조작자를 사용한다.

cout << setiosflags(ios::fixed) << 1000000000 << endl;

 

cerr 오브젝트

표준에러장치(화면)에 에러를 출력한다.(단위버퍼링-한행이 채워질때 이들 정보를 화면에 출력-을 사용한다)

 

clog 오브젝트

표준에러장치(화면)에 에러를 출력한다.(완전한 버퍼링-명확히 플러시될때까지 여러해에 걸쳐 정보를 저장-을 사용한다)

 

 

파일 입출력 처리

파일 입출력을 위해서는 다음과 같은 세가지 종류의 클래스를 사용한다.

ifstream : 입력 파일 스트림 클래스

ofstream : 출력 파일 스트림 클래스

fstream : 입출력 파일 스트림 클래스

 

파일 열기와 닫기

출력파일 열기

ofstram outfile(“test.dat”); 

if(!outfile)                         // if(!outfile.is_open()) 로 점검하여도 된다.

cout << “파일 오픈 에러”;

else

    cout << “파일 정상적으로 오픈 되었습니다”

outfile.close()   // 파일을 닫는다.

 

입력파일열기

Ifstream infile(“read.dat”);  // 이경우 파일이 존재하지 않으면 생성한다. 파일존재하지 않는경우 생성하지 않으려면

If(!infile)                           // ifstream infile(“read.dat”,ios::nocreate) 형식으로 오픈하여야 한다.

cout << “file open error”;

else

cout << “file open successed”;

 

open 멤버함수에 사용되는 열거형 매개변수

ios::binary

이진모드로 파일 열기(기본은 텍스트 모드이다)

ios::app

파일의 끝에 추가한다

ios::ate

처음에는 파일끝에 추가되지만 그 다음부터는 현재 위치에 추가된다.

ios::in

읽기모드로 파일을 연다

ios::out

쓰기모드로 파일을 연다

ios::trunc

이미 파일이 있는경우 내용을 삭제한다

ios::nocreate

파일이 없으면 에러가 발생된다

ios::noreplace

이미 파일이 있으면 에러가 발생된다.

 

파일에 읽고 쓰기

char ch;

char buffer[81];

ifstream inputfile(“read.dat”);

 

inputfile >> ch;   // 파일로부터 한문자 읽어들인다.

inputfile >> buffer  // 공백문자로 구별되는 한단어를 읽어들인다.

ch=inputfile.get();

inputfile.get(ch);

 

inputfile.get(buffer,80);  // 하나의 레코드가 80바이트 이하이면 ‘\n’ 이 나타날 때 까지 데이터를 읽어 buffer에 저장하고 80바이트 이상이면 80바이트까지 읽어서 buffer에 저장한다.

inputfile.getline(buffer,80) // get과 같지만 ‘\n’문자를 읽어는 들이지만 저장하지는 않는다.

 

ofstream outfile(“test.data”);

outfile << buffer << endl;

 

이진 파일에 읽고 쓰기

char buffer[80];

int nCount=80;

ifstream infile(“test.dat”,ios::in|ios::binary);

ofstream outfile(“write.dat”,ios::out|ios::binary);

while(nCount==80)

{

           infile.read(buffer,80);

nCount=infile.gcount();

outfile.write(buffer,80);

if(outfile.rdstat() != ios::goodbit)

             cerr<< “write error!!”;

}

infile.close();

outfile.close();

반응형

+ Recent posts