加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 为什么可以打开`ifstream`进行读写?

发布时间:2020-12-16 07:22:10 所属栏目:百科 来源:网络整理
导读:我今天看到了一段有趣的代码: 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 – sp
我今天看到了一段有趣的代码:

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)

这是一个方便的功能,以避免以后操纵缓冲区本身.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读