std::basic_ios<CharT,Traits>:: good
|
bool
good
(
)
const
;
|
||
스트림에서 가장 최근 I/O 작업이 성공적으로 완료된 경우 true 를 반환합니다. 구체적으로는 rdstate ( ) == 0 의 결과를 반환합니다.
스트림 상태 비트를 설정하는 조건 목록은 ios_base::iostate 를 참조하십시오.
목차 |
매개변수
(없음)
반환값
스트림 오류 플래그가 모두 false이면 true , 그렇지 않으면 false 를 반환합니다.
예제
#include <cstdlib> #include <fstream> #include <iostream> int main() { const char* fname = "/tmp/test.txt"; std::ofstream ofile{fname}; ofile << "10 " << "11 " << "12 " << "non-int"; ofile.close(); std::ifstream file{fname}; if (!file.good()) { std::cout << "#1. 파일 열기 실패 - test.txt - " "오류 플래그 중 하나가 참입니다\n"; return EXIT_FAILURE; } // 일반적인 C++ I/O 루프는 I/O 함수의 반환 값을 // 루프 제어 조건으로 사용하며, 여기서는 operator bool()이 사용됨 for (int n; file >> n;) std::cout << n << ' '; std::cout << '\n'; if (file.bad()) { std::cout << "#2. 읽기 중 I/O 오류 - badbit이 참입니다\n"; return EXIT_FAILURE; } else if (file.eof()) std::cout << "#3. 파일 끝에 성공적으로 도달 - eofbit이 참입니다\n" "file.good()이 거짓이더라도 이것은 정상입니다\n"; else if (file.fail()) std::cout << "#4. 정수가 아닌 데이터 발견 - failbit이 참입니다\n"; }
가능한 출력:
10 11 12 #4. Non-integer data encountered - failbit is true
참고 항목
다음 표는 가능한 모든 basic_ios 접근자( good() , fail() 등)의 값과 ios_base::iostate 플래그 조합 간의 관계를 보여줍니다:
| ios_base::iostate 플래그 |
basic_ios
접근자
|
|||||||
eofbit
|
failbit
|
badbit
|
good() | fail() | bad() | eof() | operator bool | operator! |
| false | false | false | true | false | false | false | true | false |
| 거짓 | 거짓 | 참 | 거짓 | 참 | 참 | 거짓 | 거짓 | 참 |
| 거짓 | 참 | 거짓 | 거짓 | 참 | 거짓 | 거짓 | 거짓 | 참 |
| 거짓 | 참 | 참 | 거짓 | 참 | 참 | 거짓 | 거짓 | 참 |
| 참 | 거짓 | 거짓 | 거짓 | 거짓 | 거짓 | 참 | 참 | 거짓 |
| 참 | 거짓 | 참 | 거짓 | 참 | 참 | 참 | 거짓 | 참 |
| 참 | 참 | 거짓 | 거짓 | 참 | 거짓 | 참 | 거짓 | 참 |
| 참 | 참 | 참 | 거짓 | 참 | 참 | 참 | 거짓 | 참 |