我有一点问题。我想跳过文件中的某些行。我正在使用
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);
}
}
答案 0 :(得分:0)
请在致电eof()
后查看ignore()
:
if (f.ignore(std::numeric_limits<std::streamsize>::max(), '\n').eof()) {
// end of file was found
}