0
我遇到了一些问题。我想跳过文件中的一些行。 ATM我使用捕捉(eof-)istream忽略的例外
for(int i=0; i < ln -1; ++i)
{
ifFile.ignore((std::numeric_limits<std::streamsize>::max)(),'\n');
}
在cplusplus.com有写在忽略会抛出一个异常,如果到达EOF。但我无法用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;
}
}
}
但它并没有碰上赶上()。
如果有一些问题随时问。
更正一个:
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);
}
}
你有[设置异常掩码(http://en.cppreference.com/w/ cpp/io/basic_ios/exceptions)(如[此参考资料](http://en.cppreference.com/w/cpp/io/basic_istream/ignore)中所述)? –
Iostreams默认情况下不使用异常,而是具有**失败状态**。一般来说,配置iostream以使用异常通常不是一个好主意,正是由于EOF处理。这些流并非真正用于使用异常来报告故障。 –
但如何忽略(应该)设置在EOF如何获得eofbit? if(ifFile.eof())在ifFile.ignore(...)后不能直接工作(...) –