我不明白我的输入文件流在这里抛出了什么异常.我之前做过几乎完全没有任何问题.
std::string accnts_input_file = "absolute_path/account_storage.txt";
std::string strLine;
std::ifstream istream;
istream.exceptions( std::ifstream::failbit | std::ifstream::badbit );
try
{
istream.open( accnts_input_file.c_str() );
while( std::getline( istream, strLine ) )
{
std::cout << strLine << '\n';
}
istream.close();
}
catch( std::ifstream::failure &e )
{
std::cerr << "Error opening/reading/closing file" << '\n'
<< e.what()
<< std::endl;
}
Run Code Online (Sandbox Code Playgroud)
我只是打印它现在读取的行来尝试跟踪错误.它逐行读取文件并打印它们,然后抛出异常.例外是basic_ios :: clear,我不明白.我认为ifstream :: failbit是抛出异常,因为当我只设置ifstream :: badbit时它不会抛出异常,但我无法弄清楚原因.我也试过'while(!istream.oef())'和大多数其他方法,而不是'while(std :: getline(istream,strLine))',但我一直得到同样的错误.
我敢肯定这可能是我想念的东西,但任何帮助都会受到赞赏.谢谢
...
a)输入的文件结束条件,在这种情况下,getline设置eofbit.
...
3)如果由于某种原因没有提取任何字符(甚至没有丢弃的分隔符),则getline设置failbit并返回.
这意味着,对文件结束的条件,功能设置都 eofbit和failbit.当你要求failbit设置异常时,库会引发异常.