如何最好地保持关闭文件的功能?

Jas*_*ick 2 c++ file-io stl const

因此,我一直在尝试更严格地制作任何不应被函数触及的传递参数const.

我在一些C++代码中遇到的一种情况是对象可能会发生变化,但我希望"锁定"函数来访问对象的某些关键功能.例如,对于std::ifstream文件句柄,我可能希望阻止该函数关闭该文件.

如果我把它作为a传递,那么const &const部分让我不能执行标准文件i/o.

我想要一些东西

void GetTags(Arr<std::string> & tags, std::ifstream const& fileHandle)
Run Code Online (Sandbox Code Playgroud)

...但是以允许文件i/o但不打开/关闭操作的方式编写.

在C++中有没有好的/可靠的方法呢?什么是最佳做法?

Ker*_* SB 6

这已经为你做标准库设计:传递给一个参考std::istream来代替,这并没有开启或关闭的概念-它暴露流接口.

void stream_me(std::istream & is);

std::ifstream is("myfile.txt");
stream_me(is);
Run Code Online (Sandbox Code Playgroud)