Namespaces
Variants

std::basic_ios<CharT,Traits>:: good

From cppreference.net
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
거짓 거짓 거짓 거짓 거짓
거짓 거짓 거짓 거짓 거짓 거짓
거짓 거짓 거짓 거짓
거짓 거짓 거짓 거짓 거짓 거짓
거짓 거짓 거짓
거짓 거짓 거짓 거짓
거짓 거짓