C,fstream对象传递给函数作为引用,const?
发布时间:2020-12-16 09:42:02 所属栏目:百科 来源:网络整理
导读:我知道通常,对数据的引用应该作为函数中的常量被隔离,以便函数不能改变它,对于仅用于输入的fstream对象是否也适用? 如… void doFoo(fstream fileName){ fileName.open("data.txt",ios::in);} 如果它是可取的,它是否遵循大多数其他一切的逻辑? 如… void d
我知道通常,对数据的引用应该作为函数中的常量被隔离,以便函数不能改变它,对于仅用于输入的fstream对象是否也适用?
如… void doFoo(fstream &fileName) { fileName.open("data.txt",ios::in); } 如果它是可取的,它是否遵循大多数其他一切的逻辑? 如… void doFoo(const fstream &fileName) { fileName.open("data.txt",ios::in); } 对输出流也很好奇 我只是想知道它是否重要,如果是的话,为什么? 谢谢! 解决方法
文件的常量不会转换为用于访问文件的对象的常量属性.即使只是读取文件,也必须修改内部缓冲区,当前读取位置等.这同样适用于输出,所以基本上const流是没用的.
顺便说一句:如果你想清楚一个函数只从流中读取,那么传递给它一个std :: istream&.首先,istream中的“i”可以合理地确定你没有写入它.其次,fstream缺少的“f”允许使用stringstreams,或者像cin这样的流. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |