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(...)後不能直接工作(...) –