如果我打开一个像这样的文件:
ofstream file("file.dat",ios::binary);或
ofstream file("file.dat",ios::binary | ios::out);对于在后一种形式中打开的文件,我可以用前一种形式执行什么操作,反之亦然
谢谢
发布于 2010-02-10 02:36:33
感谢所有回答我的人:我现在根据我得到的答案测试了几个代码,并得出了以下总结:
使用ofstream: ios::out是默认设置,即使未指定任何内容,但如果只使用ios::in和ofstream,则不会出现编译错误(除非使用()或>>或某个ifstream对象),但不会写入任何文件。
使用ifstream的输出: ios::in是默认的,即使没有指定,但是如果你只使用ios::和ifstream,没有编译错误(除非你使用write()或<<或一些ofstream对象),但是你不能从文件中读取任何信息。
使用fstream:没有默认值,你必须明确地决定你要做什么。否则,没有编译错误,但您不会简单地得到您想要的东西。
至于最初的问题,两者的工作原理完全相同!
发布于 2010-02-10 01:51:19
对于ofstream,ios::out是默认值,所以没有区别。我相信指定ios::out唯一的区别在于你是否使用了一个fstream,它可以被打开以进行读写,或者两者都可以。
发布于 2010-02-10 01:57:20
在大多数情况下,我希望没有区别,尽管从技术上看,这可能是特定于实现的。
在我的实现(gcc 3.4.3)中,ofstream的open在ofstream->open()调用中使用ios:out模式,而不管通过构造函数指定了什么,所以它纯粹是可选的。如果使用fstream,情况并非如此,需要显式指定。
https://stackoverflow.com/questions/2231138
复制相似问题