std::getline
当它得到一个eof
. 这就是我正在做的事情。
std::ifstream stream;
stream.exceptions(std::ifstream::failbit|std::ifstream::badbit);
try{
stream.open(_file.c_str(), std::ios_base::in);
}catch(std::ifstream::failure e){
std::cout << "Failed to open file " << _file.c_str() << " for reading" << std::endl;
}
while(!stream.eof()){
std::string buffer = "";
std::getline(stream, buffer);
//process buffer
//I do also need to maintain state while parsing
}
在上面的代码getline
中抛出异常,因为它得到eof
如何处理这种情况?
编辑
std::string buffer = "";
while(std::getline(stream, buffer)){
//also causes getline to hit eof and throw
}