我想在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