【第22期】观点:IT 行业加班,到底有没有价值?

ios::ate和ios::app在C++文件中的区别

转载 2016年06月01日 21:57:15

ios::app与ios::ate的区别

 

 

文件流

ios::app

ios::ate

打开方式

结果

打开方式

结果

ofstream

(默认是ios::in | ios::trunc)

ios::app或ios::app|ios::out

如果没有文件,生成空文件;

如果有文件,在文件尾追加

ios::ate或ios::ate|ios::out

如果没有文件,生成空文件;

如果有文件,清空该文件

ios::app|ios::in

不管有没有文件,都是失败

ios::ate|ios::in

如果没有文件,打开失败;

如果有文件,定位到文件尾,可以写文件,但是不能读文件

Ifstream

(默认是ios::in)

ios::app或ios::app|ios::out

不管有没有文件,都是失败

ios::ate或ios::ate|ios::out

如果没有文件,打开失败;
如果有文件,定位到文件尾,但是不能写文件

ios::app|ios::in

?

ios::ate|ios::in

?

fstream

(默认是ios::in | ios::out)

ios::app|ios::out

如果没有文件,创建文件;

如果有文件,在文件尾追加

ios::ate|ios::out

如果没有文件,创建文件;

如果有,清空文件

ios::app|ios::in

如果没有文件,失败

ios::ate|ios::in

如果没有文件,失败

N/A

N/A

ios::ate|ios::out|ios::in

如果没有文件,打开失败,

如果有文件,定位到文件尾

总结

ios::app不能和ios::in相配合,

但可以和ios::out配合,打开输入流

ios::ate可以和ios::in配合,此时定位到文件尾;

如果没有ios::in相配合而只是同ios::out配合,那么将清空原文件;

区别

app会在每次写操作之前都把写指针置于文件末尾,

而ate模式则只在打开时才将写指针置于文件末尾。在文件操作过程中,可以通过seekp等操作移动指针位置。

例子:

多个线程或者进程对一个文件写的时候,假如文件原来的内容是abc

 

以ios::app:

第一个线程(进程)往里面写了个d,第二个线程(进程)写了个e的话,结果是abcde

以ios:ate:

后面写的会覆盖前面一个写的,第一个线程(进程)往里面写了个d,第二个线程(进程)写了个e的话,结果为abce

 

参考:

CSDN:ios::app与ios::ate打开方式有什么不同

ofstream与ate的故事


网址:http://www.cnblogs.com/zhcncn/archive/2013/01/08/2851656.html

举报

相关文章推荐

写给 iOS 程序员看的 C++(2)

原文:Introduction to C++ for iOS Developers: Part 2 作者:Matt Galloway 译者:kmyhy 欢迎回到《写给 iOS 程序员看的 ...
  • kmyhy
  • kmyhy
  • 2016-09-26 10:51
  • 2771

iOS C++/OC 混编

转自:http://blog.csdn.net/fengsh998/article/details/8010696 Objective-C和C++混编的要点 在 Objective-C++中,...

写给 iOS 程序员看的 C++(1)

原文:Introduction to C++ for iOS Developers: Part 1 作者:Matt Galloway 译者:kmyhy 你是一个 Objective-C 方...
  • kmyhy
  • kmyhy
  • 2016-09-07 10:40
  • 2312

5个月iOS开发入门总结(C++转行iOS)

前言:一个人写的ios转行总结,思路很清晰,值得学习 原文网址:http://www.cocoachina.com/bbs/read.php?tid-332587.html 啰嗦(请跳过)...

C++ std::fstream open mode

ios::app:   以追加的方式打开文件  ios::ate:   文件打开后定位到文件尾,ios:app就包含有此属性  ios::binary:  以二进制方式打开文件,缺省的方式是文本方...

【如何快速的开发一个完整的iOS直播app】(采集篇)

前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,首先需要采集主播的视频和音频,然后传入流媒体服务器,本篇主要讲解如...

【如何快速的开发一个完整的iOS直播app】(原理篇)

前言 大半年没写博客了,但我一直关注着互联网的动向,最近会研究很多东西,并分享,今年移动直播行业的兴起,诞生了一大批网红,甚至明星也开始直播了,因此不得不跟上时代的步伐,由于第一次接触的原因,因此花...

【如何快速的开发一个完整的iOS直播app】(播放篇)

前言 在看这篇之前,如果您还不了解直播原理,请查看上篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,集成ijkplayer成功后,就算完成直播功能一半的工程了,只要有...

iOS开发嵌入C++语言混编

最近遇到一个问题,就是Object

文件打开模式ios::in|ios::out|ios::trunc

//不知道是因为内存的缓存吧,文件流这边的响应总是不太及时 ////预测,如果是这种方式打开,应该是先清除内容再打开文件 //实际结果,ios::out并不会在文件打开前把文件内容都清除 #in...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)