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
}
std::getline()
后检查eof()
。 - hmjd