我今天看到了一段有趣的代码:
ifstream fil;
fil.open( "ini.txt", std::ios::in | std::ios::out );
我正准备咆哮它的破碎,但令我惊讶的是,我看到cppreference.com显然认为这是正确的:
http://en.cppreference.com/w/cpp/io/basic_ifstream/open
mode – specifies stream open mode. It is bitmask type, the following constants are defined:
- in: open for reading
- out: open for writing
ifstream如何理解为INPUT文件流,如何打开读取和写入?
它不一定是fstream而不是ifstream吗?
最佳答案 std :: ifstream就像是std :: basic_filebuf的句柄.您甚至可以通过调用std :: basic_ifstream :: rdbuf从句柄访问该缓冲区.
您可以从句柄中窃取该缓冲区,并将其分配给另一个(我不会详细介绍它).这是有趣的事情.您可以将该缓冲区从ifstream移动到ofstream.这需要能够打开缓冲区进行写入.因此,您链接的相同参考页面说明了这一点:
Effectively calls
rdbuf()->open(filename, mode | ios_base::in)
这是一个方便的功能,以避免以后操纵缓冲区本身.