//opens in binding it to the given file;
ifstream& open_file(ifstream &in,const string &file)
{
in.close();//关闭in,因为in可能处于已经打开的状态;
in.clear();//重新置位,因为in可能有些错误;
in.open(file.c_str());//打开给定的文件
return in;
}
由于不清楚流in的当前状态,因此首先调用close和clear将这个流设置为有效状态,然后尝试打开给定的文件。如果打开失败,流的条件状态将标志这个流不可用。最后返回流对象in,此时,in要么已经与指定文件帮顶起来,要么处于错误状态。