首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C++文件中:作为ios::binary打开的文件与作为ios::binary | ios::out打开的文件有什么不同?

在C++文件中:作为ios::binary打开的文件与作为ios::binary | ios::out打开的文件有什么不同?
EN

Stack Overflow用户
提问于 2010-02-10 01:41:10
回答 4查看 1.3K关注 0票数 5

如果我打开一个像这样的文件:

代码语言:javascript
运行
复制
ofstream file("file.dat",ios::binary);

代码语言:javascript
运行
复制
ofstream file("file.dat",ios::binary | ios::out);

对于在后一种形式中打开的文件,我可以用前一种形式执行什么操作,反之亦然

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-10 02:36:33

感谢所有回答我的人:我现在根据我得到的答案测试了几个代码,并得出了以下总结:

使用ofstream: ios::out是默认设置,即使未指定任何内容,但如果只使用ios::in和ofstream,则不会出现编译错误(除非使用()或>>或某个ifstream对象),但不会写入任何文件。

使用ifstream的输出: ios::in是默认的,即使没有指定,但是如果你只使用ios::和ifstream,没有编译错误(除非你使用write()或<<或一些ofstream对象),但是你不能从文件中读取任何信息。

使用fstream:没有默认值,你必须明确地决定你要做什么。否则,没有编译错误,但您不会简单地得到您想要的东西。

至于最初的问题,两者的工作原理完全相同!

票数 1
EN

Stack Overflow用户

发布于 2010-02-10 01:51:19

对于ofstream,ios::out是默认值,所以没有区别。我相信指定ios::out唯一的区别在于你是否使用了一个fstream,它可以被打开以进行读写,或者两者都可以。

票数 5
EN

Stack Overflow用户

发布于 2010-02-10 01:57:20

在大多数情况下,我希望没有区别,尽管从技术上看,这可能是特定于实现的。

在我的实现(gcc 3.4.3)中,ofstream的open在ofstream->open()调用中使用ios:out模式,而不管通过构造函数指定了什么,所以它纯粹是可选的。如果使用fstream,情况并非如此,需要显式指定。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2231138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档