o que significa o valor de retorno rdstate ()?

istream& Read(istream &is)
{
    std::string buf;
    while (is >> buf)       
    {   
        cout << is.eofbit << " " << is.failbit << " " << is.badbit << endl;
        cout << is.rdstate() << endl;
        cout << buf << endl;
    }
    cout << is.eofbit << " " << is.failbit << " " << is.badbit << endl;
    cout << is.rdstate() << endl;
    is.clear();
    cout << is.eofbit << " " << is.failbit << " " << is.badbit << endl;
    cout << is.rdstate() << endl;
    return is;
}

Se eu inserir caracteres normais como "test", a saída será1 2 4 0.
Então eu digito CTRL + Z (windows), a saída é1 2 4 3 1 2 4 0.

Pergunta: 1. o que fazrdstate()&nbsp;valor de retorno significa? (Por que produz 3, não 2? Não 1?)

Por que nãois.eofbiteis.failbit&nbsp;alterar depois que eu digitei CTRL + Z? (ComoC ++ Primer 5a Edição&nbsp;(Atingir o final do arquivo define o eofbit e o failbit)