我想在for循環中使用std::getline
從流中讀取數據。使用getline在for循環中安全讀取流
我指的流是從std::basic_iostream
繼承的類。
std::string line; for(;;){ try{ std::getline(myStreamObj, line); if(line != ""){ std::cout << line << std::endl; } } catch(std::ios_base::failure& ex){ std::cout << ex.what() << std::endl; } }
我想也是要檢查的其他錯誤情況類似
eofbit failbit badbit
但我對此有些困惑。
如果某些條件設置符合這3個標誌,則會出現類似std::ios_base::failure
的任何異常?如何處理這三種情況?我需要以其他方式進行檢查嗎?
感謝 AFG
感謝您的回覆!我不知道這種情況,所以它很有用。我能再問你一個小細節嗎?爲什麼例外在這裏不是一個好的選擇? – 2010-02-16 12:03:08
@Abruzzo很多原因 - 速度較慢,不輕易支持恢復,需要編寫更多代碼來處理錯誤。大多數人閱讀你的代碼會期望在這個區域使用異常*而不是*,因此他們會發現代碼更難理解。 – 2010-02-16 12:06:18