0

だから私たちは通常、次のようなことをします

std::ifstream file("file");
std::string line;
bool ret = getline(file,line);

「ret」ブールは、行が見つかったかどうかを示します。

しかし、次の "getline()" の呼び出しが確実に false を返すかどうかを事前に確認するにはどうすればよいでしょうか? つまり、実際に「getline()」を呼び出して確認することなく、EOF に到達したかどうかを確認するにはどうすればよいでしょうか。

私がこれをやりたい理由は、次のような状況があるからです。

while(getline(file,line))
{
  //code
  //i want to do some "final" thing right here in this loop, for the last line.
}
4

2 に答える 2

1

あなたが使うことができますstd::istream::peek

次の文字を抽出せずに読み取り、返します。つまり、ストリームから抽出される次の文字として残します。

EOF終わりに達した場合、戻ります。

于 2013-02-23T08:44:14.313 に答える
1

getlineは、実際にはostreamへの参照を返します。これは、eofに到達するか、ストリームが悪くなると予測できない場合にのみfalseにキャストされます。したがって、状況と、eofストリームと不良ストリームの両方を処理するかどうかによって異なります。

于 2013-02-23T08:46:36.583 に答える