std::string buf;
std::ifstream ifs;
ifs.exceptions(std::ios_base::failbit);

//前半
ifs.open("a.txt");
std::getline(ifs, buf, '\0');
ifs.close();
buf.clear();

//後半
ifs.open("b.txt");
std::getline(ifs, buf, '\0');
ifs.close();

これを実行すると例外std::ios_base::failureが投げられるんですけど、どうすればファイルを2つ読み込めますか?
ちなみに、前半か後半のどちらかをコメントアウトすれば例外は発生しません。