捕获(eof-)异常istream忽略

时间:2014-05-07 10:54:40

标签: c++ exception try-catch eof istream

我有一点问题。我想跳过文件中的某些行。我正在使用

        for(int i=0; i < ln -1; ++i)
        {
            ifFile.ignore((std::numeric_limits<std::streamsize>::max)(),'\n');
        }

cplusplus.com上写道,如果达到eof,ignore将抛出异常。但我无法通过try / catch获得它。我做错了什么?或者我误读了吗?

我需要的是,如果达到eof,我想再次从第一行开始进行某些操作。

所以我尝试了但是它没有工作:

        for(int i=0; i < ln -1; ++i)
        {
            try
            {
                ifFile.ignore((std::numeric_limits<std::streamsize>::max)(),'\n');
            }
            catch(exception e)
            {
                if(ifFile.eof())
                {
                    ifFile.clear(ifFile.eofbit);
                    ifFile.seekg(std::ios::beg);
                    _readCounter.currLine = 1;
                }
            }
        }

但它没有遇到catch()。

如果有问题可以随意提问。

更正了一个:

        for(int i=0; i < ln; i++)
        {
            if(ifFile.ignore((std::numeric_limits<std::streamsize>::max)(),'\n').eof())
            {
                ifFile.clear(ifFile.eofbit);
                ifFile.seekg(std::ios::beg);
            }
        }

1 个答案:

答案 0 :(得分:0)

请在致电eof()后查看ignore()

if (f.ignore(std::numeric_limits<std::streamsize>::max(), '\n').eof()) {
    // end of file was found
}