2013년 1월 7일
임시로 파일을 읽어들이는 부분이 필요해서 ifstream에 대해 공부해보게 됐다.
전부터 파일 입출력은 좀 꺼려졌었는데 이 참에 한번 파보자고 마음 먹었다.
먼저 ifstream은 싱글 바이트 문자 데이터를 순차적으로 파일에서 읽는데 사용할 스트림을 정의 한다.
basic_ifstream 클래스가 typedef 된 형태이다.
예제소스 |
std::ifstream infile; if( !infile.is_open() ) { return false; } char szLine[4096] = { 0, }; infile.getline( szLine, 4096 ); printf( "%s", szLine ); |
open함수로 파일을 열게 되는데 성공/실패 값을 반환할 줄 알았더니만 반환타입이 void다..
함수를 찾아보니 is_open() 함수가 있었다.
open 함수를 이용해서 파일을 열고 is_open() 함수를 통해 파일이 제대로 열렸는지 여부를 확인하면 된다.
getline()함수로 한 줄을 읽어들인다.
good(), eof(), fail(), bad() 함수를 통해서 현재 파일 스트림의 상태를 체크해볼 수 있는데
eof,fail,bad는 비트 플래그로 되어 있다.
good은 이 세가지 비트 플래그가 모두 true일때 true를 반환하고 하나라도 false이면 false를 반환하게 된다.
bad 플래그는 스트림의 완전성이 깨질 경우에 true가 되는데 하나의 스트림에 동시의 두개의 다른 작업이 진행 될 때 발생하는 것이다.
fail 플래그는 논리 오류가 발생했을때 설정이 된다. 예를 들면 받고자 하는 값은 int형인데 문자형을 받았을 경우 failbit이 설정된다.
failbit이 설정되더라도 입출력이 가능하지만 badbit이 발생한다면 입출력이 불가능해진다.
- 아래 표는 어디선가 퍼왔다..
Public 멤버 |
생성자 - 객체를 생성하며 부가적으로 파일과 연관시킬 수 있다. |
istream 으로 부터 상속 받은 멤버들 |
operator>> : 서식화된 데이터를 추출(입력)한다. unget : get pointer 을 감소 시킨다. |
ios 로 부터 상속 받은 함수들 |
good : 스트림의 상태가 입출력 작업을 할 수 있는지 확인한다. tie : 엮어진 스트림(tied stream)을 얻거나 설정한다. rdbuf : 연관된 스트림 버퍼를 얻거나 설정한다. |
ios_base 로 부터 상속된 함수들 |
flags : 서식 플래그를 수정하거나 얻어온다. unsetf : 특정 서식 플래그를 초기화 한다. precision : 부동 소수점 정밀도를 수정하거나 얻어온다. width : 필드의 너비를 수정하거나 얻어온다 |
'Programming > C++' 카테고리의 다른 글
[C++] static const에 대한 고찰 (0) | 2013.04.11 |
---|---|
[C++] strtok 함수 (0) | 2013.04.11 |
[C++] 생성자 호출과 기본 타입 캐스팅간 우선순위 (0) | 2012.09.26 |
[C++] 링크시 나오는 에러 추적하기 (0) | 2012.09.26 |
[C++] 빌드 시간 구하기 (0) | 2012.09.26 |
댓글