std::basic_ios<CharT,Traits>:: clear
|
void
clear
(
std::
ios_base
::
iostate
state
=
std::
ios_base
::
goodbit
)
;
|
||
스트림 오류 상태 플래그를 state 값으로 설정합니다. 기본적으로는 std::ios_base::goodbit 을 할당하여 모든 오류 상태 플래그를 지우는 효과를 가집니다.
만약 rdbuf() 가 널 포인터인 경우(즉, 연결된 스트림 버퍼가 없는 경우), state | std:: ios_base :: badbit 가 할당됩니다.
목차 |
매개변수
| state | - |
새로운 오류 상태 플래그 설정. 다음 상수들의 조합일 수 있습니다:
|
반환값
(없음)
예외
새로운 오류 상태에 exceptions() 마스크에 포함된 비트도 포함되어 있으면, failure 타입의 예외를 발생시킵니다.
예제
clear()
인수 없이 사용하면 예상치 못한 입력 후
failbit
을 해제하는 데 사용할 수 있습니다;
std::
cin
.
putback
(
c
)
에 대해서는
ungetc
을 참조하십시오.
#include <iostream> #include <string> int main() { for (char c : {'\n', '4', '1', '.', '3', '\n', 'Z', 'Y', 'X'}) std::cin.putback(c); // emulate user's input (not portable: see ungetc Notes) double n; while (std::cout << "Please, enter a number: " && !(std::cin >> n)) { std::cin.clear(); std::string line; std::getline(std::cin, line); std::cout << line << "\nI am sorry, but '" << line << "' is not a number\n"; } std::cout << n << "\nThank you for entering the number " << n << '\n'; }
출력:
Please, enter a number: XYZ I am sorry, but 'XYZ' is not a number Please, enter a number: 3.14 Thank you for entering the number 3.14
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 412 | C++98 |
현재 오류 상태에
exceptions() 마스크에 포함된 비트가 포함된 경우 예외가 발생함 |
새로운 오류 상태를
확인하도록 변경 |
참고 항목
|
상태 플래그 설정
(public member function) |
|
|
상태 플래그 반환
(public member function) |