我今天看到了一段有趣的代码:

ifstream fil;

fil.open( "ini.txt", std::ios::in | std::ios::out );

我只是要大声疾呼它的破损,但令我惊讶的是,我看到cppreference.com显然认为这是正确的:

http://en.cppreference.com/w/cpp/io/basic_ifstream/open



据我所知是INPUT文件流,如何打开ifstream进行读写?

不一定是fstream而不是ifstream吗?

最佳答案

std::ifstream类似于std::basic_filebuf的句柄。您甚至可以通过调用std::basic_ifstream::rdbuf从句柄访问该缓冲区。

您可以从句柄中窃取该缓冲区,然后将其分配给另一个缓冲区(我将不做介绍)。这是有趣的事情。您可以将缓冲区从ifstream移到ofstream。这就需要能够打开缓冲区进行写入。因此,您链接的同一引用页上说:



这是一种便利功能,可避免以后再操作缓冲区本身。

关于c++ - 为什么可以同时打开 `ifstream`进行读写?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46930383/

10-12 23:38