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

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

아직 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 : 오류 상태 플래그를 얻는다.

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