ios::ate和ios::trunc是什么意思?

风轻扬 2006-01-09 04:41:40
ifstream ifile("data.dat",ios::in)
ofstream ofile("data.dat",ios::out)
ios::in和ios::out分别表示读打开和写打开
我还知道ios::app表示在文件末尾追加

请问
1.ios::ate和ios::trunc是什么意思?
2.ios::trunc应该是在向文件写之前擦掉所有之前数据吧
那ios::out也是不保留原来的值的吧,他们两个有区别吗?
...全文
15406 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
风轻扬 2006-01-09
  • 打赏
  • 举报
回复
ios::out不保留,我试过了。
风轻扬 2006-01-09
  • 打赏
  • 举报
回复
还有一个问题:
cin 是 istream的对象,全局对象,那istream还可以声明其他对象吗?如果可以声明,如何声明,功能和cin有什么区别吗?
同样的问题还有cout ,它是ostream的对象,全局对象,那ostream还可以声明其他对象吗?如果可以声明,如何声明,功能和cout有什么区别?
dragonzxh 2006-01-09
  • 打赏
  • 举报
回复 1
如果ate是这个意思,那ate和app的含义也差不多了,都是在末尾追加了?
==========================
ate:打开文件之后令读写位置移至文件尾端//看清楚,是读写位置!
app:写入时始终添加于尾端
isml 2006-01-09
  • 打赏
  • 举报
回复
ios::ate是打开文件时定位到文件末尾
如果只指定ios::out的话应该是保留的吧,需要ios::out|ios::trunc才能清空的
看open函数的原型
void ofstream::open(const char * filename, ios::openmode mode = ios::out|ios::trunct)
风轻扬 2006-01-09
  • 打赏
  • 举报
回复
如果ate是这个意思,那ate和app的含义也差不多了,都是在末尾追加了?

还有一个问题:

cin 是 istream的对象,全局对象,那istream还可以声明其他对象吗?如果可以声明,如何声明,功能和cin有什么区别吗?
同样的问题还有cout ,它是ostream的对象,全局对象,那ostream还可以声明其他对象吗?如果可以声明,如何声明,功能和cout有什么区别?
dragonzxh 2006-01-09
  • 打赏
  • 举报
回复 1
ios::trunc存在的理由:
ios::trunc|ios::in|ios::out 在C中标志是"W+"
ios::in|ios::out 在C中标志是"r+"
dragonzxh 2006-01-09
  • 打赏
  • 举报
回复
ios::trunc|ios::out和ios::out在C中的标志都是"w",呵呵
dragonzxh 2006-01-09
  • 打赏
  • 举报
回复 1
ate:打开文件之后令读写位置移至文件尾端(at end)
trunc:将先前的文件内容移除(Remove)

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧