Namespaces
Variants

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

From ko.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
거짓 거짓 참 거짓 참 참 거짓 거짓 참
거짓 참 거짓 거짓 참 거짓 거짓 거짓 참
거짓 참 참 거짓 참 참 거짓 거짓 참
참 거짓 거짓 거짓 거짓 거짓 참 참 거짓
참 거짓 참 거짓 참 참 참 거짓 참
참 참 거짓 거짓 참 거짓 참 거짓 참
참 참 참 거짓 참 참 참 거짓 참