我今天看到了一段有趣的代码:
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/