2010-02-27 109 views
0

我正在使用其中一個相關問題中使用的表單。唯一的問題是,我一直在文件的最後。C++ EOF Getline錯誤

該文件是一個fstream和str是一個字符串。

未處理的異常 微軟C++異常:性病::的ios_base ::失敗

 
while (getline(file, str)) 
{

}

if (cin.bad()) { // IO error } else if (!cin.eof()) { // format error (not possible with getline but possible with operator>>) } else { // format error (not possible with getline but possible with operator>>) // or end of file (can't make the difference) }

回答

2

如果您收到std::ios_base::failure拋出異常它極有可能是你引起的(或者你正在使用一些代碼)將它們打開以供您的文件使用。它們應該默認關閉。只是爲了測試,你可以嘗試在while循環之前立即關閉它們,但你可能需要調查什麼是打開它們。

file.exceptions(std::ios_base::goodbit); 
+0

謝謝,沒有注意到,一些打開文件例外示例代碼了, raw_data.exceptions(ifstream的:: failbit | ifstream的:: badbit); – Roo 2010-02-27 09:38:19