を使用してファイルを解析しようとしていますが、std::istream
エラー処理を簡素化するために例外を使用したいと考えています。ただし、ストリームは、有効になっている場合でも、eofで例外をスローすることはありません。
次のスニペットについて考えてみます。
std::string line("Lorem ipsum");
std::istringstream is(line);
is.exceptions(std::ios::eofbit | std::ios::failbit);
std::string value1, value2, value3;
is >> value1;
std::cout << is.eof() << std::endl;
is >> value2;
std::cout << is.eof() << std::endl;
is >> value3;
std::cout << is.eof() << std::endl;
value2を読み取った後、trueeof()
を返しますが、ストリームにそうするように指示されていても、いつでも例外はスローされません(3行目を参照)。最後に、value3には空の文字列が含まれています。
私は何が欠けていますか?
重要な場合:Xcode4.6.1の一部であるLLVMlibc ++(C++11をサポートするLLVMC++)を使用しています。