は私がstd::istream
次の内容(改行が'\n'
文字である)を指していると仮定今n == 8
をC++のgetlineとgcount
std::istream & is = ...
char buff[9];
is.getline(buff, 9);
int n = is.gcount();
をし、 strcmp(buff, "12345678") == 0
。問題は、私は行の一部ではなく行全体を読むことをどのように知っていますか?
蒸気の代わりに以下の内容を指している場合:
123456789
0
と同じコードが実行され、私は同じ行にはまだしています。これらの2つのケースを区別するにはどうすればよいですか?
'&'でなく '=='でなければなりませんか? –
私は最初に '&'を持っていましたが、 '=='に変更しました。フェイルビットが他の状況(例えば、eof)で設定される可能性もあり、eofbitも設定されます。ですから、ここでは '=='が正しい選択だと思います。 – Tim