모두의 코드
C++ 레퍼런스 - ios::clear

작성일 : 2012-03-25 이 글은 4948 번 읽혔습니다.

아직 C++ 에 친숙하지 않다면 씹어먹는 C++ 은 어때요?

ios::clear

void clear(iostate state = goodbit);

오류 상태 플래그를 설정한다. 오류 상태 플래그를 새로운 값으로 설정한다. 참고로 이와 유사한 동작을 하는 ios::setstate의 경우, 이전의 오류 상태 플래그를 보존하면서 설정하지만, ios::clear 의 경우 이전의 오류 상태 플래그 값을 보존하지 않는다.

만일 인자를 넣어주지 않는다면 (혹은 인자로 goodbit 을 전달하면) 모든 오류 상태 플래그는 초기화된다.

현재의 오류 상태 플래그는 ios::rdstate함수로 얻을 수 있다.

인자

state

새롭게 바꿀 ios_base::iostate 타입의 객체로 아래의 오류 상태 멤버 상수들의 조합 (비트 OR 연산) 으로 구성된다.

플래그 값

의미

eofbit

스트림으로부터 추출 작업(extracting operation)을 수행 중 End Of File 에 도달하는 경우

failbit

마지막 입력 작업이 자체의 내부 오류 때문에 실패하였을 경우

badbit

스트림 버퍼의 입출력 작업이 실패하여 발생한 오류

goodbit

오류가 없다

만일 인자로 아무 것도 전달하지 않는다면 디폴트 인자로 goodbit 가 전달된다.

리턴값

없음

실행 예제

/*

test.txt 를 in 형식으로 open 하였으므로 읽기만 가능한다. 따라서 쓰기를 하면
오류가 발생하므로 myfile.fail() 이 true 가 되고 입출력 작업은 중지되지만 오류
상태 플래그를 초기화함으로써 나중에 getline 을 수행할 수 있게 된다.

이 예제는
http://www.cplusplus.com/reference/iostream/ios/clear/
에서 가져왔습니다.

*/
#include <fstream>
#include <iostream>
using namespace std;

int main() {
  char buffer[80];
  fstream myfile;

  myfile.open("test.txt", fstream::in);

  myfile << "test";
  if (myfile.fail()) {
    cout << "Error writing to test.txt\n";
    myfile.clear();
  }

  myfile.getline(buffer, 80);
  cout << buffer << " successfully read from file.\n";

  return 0;
}

실행 결과

템플릿 멤버 정의

(basic_ios<charT, traits>)

  void clear(iostate state = goodbit);

참고 자료

  • ios::fail : failbit 이나 badbit 이 설정되어 있는지 확인한다.

  • ios::bad : badbit 이 설정되어 있는지 확인한다.

  • ios::good : 스트림에 어떠한 오류 플래그도 설정되지 않았는지 확인한다.

  • ios::eof : eofbit 이 설정되어 있는지 확인한다.

  • ios::rdstate : 오류 상태 플래그를 얻는다.

첫 댓글을 달아주세요!
프로필 사진 없음
강좌에 관련 없이 궁금한 내용은 여기를 사용해주세요

    댓글을 불러오는 중입니다..