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

ofstream之ios::ate,ios::app,ios::in,ios::out

ofstream流,以ios::app打开(或者“ios::app|ios::out”),如果没有文件,那么生成空文件;如果有文件,那么在文件尾追加。 以ios::app|ios::in打开,不管有...

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

//不知道是因为内存的缓存吧,文件流这边的响应总是不太及时 ////预测,如果是这种方式打开,应该是先清除内容再打开文件 //实际结果,ios::out并不会在文件打开前把文件内容都清除 #in...

C++文件读写详解(ofstream,ifstream,fstream)

在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: 这里主要是讨论fstream...

c++ ios::app and ios::ate

 First lets assure, that I understand what you want to do: You want to open an existing file, append...

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

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

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

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

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

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

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

文件流 ios::app ios::ate 打开方式 结果 打开方式 结果 ofstream (默认是ios::...
  • SMF0504
  • SMF0504
  • 2016年05月21日 18:02
  • 1066

ifstream 的使用方法介绍 一

ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,s...

关于文件读写操作中ios::app与ios::ate的区别

前几天在用到对文件操作的时候上网查询了一下,当时只看到说在文件末尾继续写是用ios::ate,结果当然是屡试爽了……后来又仔细看了一下文章,才发现ios::app,用这个果然就可以了。Google了一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios::ate和ios::app在C++文件中的区别
举报原因:
原因补充:

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