4

istream operator>>を使用してデータを読み取り、関数は istream への参照を返します。

例えば、

istream& operator>> (bool& val);

しかし、istream が条件ステートメント内で使用されると、どのようにブール値に変換されるのでしょうか。

例えば、

ifstream ifs(.....);  // open the file
istream &is = (istream&)ifs;

char c;

if(is >> c)   // how the istream is been evaluated into as bool
{
    // character read
}

条件式内で bool に変換される方法を説明できる人はいますか?

4

2 に答える 2

0

演算子 >> istream への参照を返します (istream&)。

したがって、実際には if (istream) を書いており、これは bool.. 演算子を呼び出しています。

条件では 0 は false です。それ以外はすべて true -> istream には、ストリームが正常かどうかをチェックする opeartor bool があるため、!fail() が返されるため、true が返されます。

于 2013-05-27T16:57:00.273 に答える