在 ifstream 预期的地方传递 fstream

pass in fstream where ifstream expected

本文关键字:方传递 fstream ifstream      更新时间:2023-10-16
void foo(ifstream &ifs)
{
    //do something
}
int main()
{
    fstream fs("a.txt", fstream::in);
    foo(fs); //error, can't compile
}

上面的代码无法编译,好像我不能用fstream对象初始化ifstream &?如果我这样做怎么办:

foo(static_cast<ifstream>(fs)); 

foo(dynamic_cast<ifstream>(fs)); 

可能你想让 foo(( 采用 istream。 如注释所示,这是 ifstream 和 fstream 的基本类型。

void foo( istream & is )

这些类在 cplusplus.com 有一个很好的参考:

  • http://www.cplusplus.com/reference/iostream/istream"输入流">
  • http://www.cplusplus.com/reference/iostream/ifstream "输入文件流类">
  • http://www.cplusplus.com/reference/iostream/fstream "输入/输出文件流类">