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();
'프로그래밍(Programming) > 자원관리(Assets)' 카테고리의 다른 글
[Collada]3dMAX작업한 파일 Collada플러그인으로 Export하는 방법. (0) | 2013.05.06 |
---|---|
xerces C++ 오픈 XML 라이브러리 컴파일 (0) | 2012.11.26 |
xml파일 읽기 저장 (0) | 2012.11.04 |
XML 파서, CMarkup (0) | 2012.11.02 |
3ds Max에서 추출한 xml 파일 분석 (0) | 2012.11.02 |