日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/4/18 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios::app与ios::ate打开方式有什么不同?? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看一個資料上說: ?
1.ios::app ???----寫入的數據將被追加在文件的末尾,此方式使用ios::out ?
2.ios::ate ???----寫入的數據將被追加在文件的末尾,此方式不使用ios::out ?

但是我看不懂最后一句,什么叫使用和不使用“ios::out”呢?? ?

ios::out本身不是就是打開一個可寫文件嗎? ?
既然都能追加寫入了,還能不讓寫? ?

謝謝。

answer1:

1.ios::app ???----寫入的數據將被追加在文件的末尾,此方式使用ios::out ?
2.ios::ate ???----寫入的數據將被追加在文件的末尾,此方式不使用ios::out ?

ios::app ?多個線程或者進程對一個文件寫的時候,假如文件原來的內容是abc,第一個線程(進程)往里面寫了個d,第二個線程(進程)寫了個e的話,結果是 abcde ?

ios:ate的話,后面寫的回覆蓋前面一個寫的,還是上面那個例子的話(第二個后寫)結果為abce

answer2:
ofstream流,以ios::app打開(或者“ios::app|ios::out”),如果沒有文件,那么生成空文件;如果有文件,那么在文件尾 追加。 ?
以ios::app|ios::in打開,不管有沒有文件,都是失敗。 ?
以ios::ate打開(或者”ios::ate|ios::out”),如果沒有文件,那么生成空文件;如果有文件,那么清空該文件 ?
以ios::ate|ios::in打開,如果沒有文件,那么打開失敗;如果有文件,那么定位到文件尾,并可以寫文件,但是不能讀文件 ?

ifstream流,以ios::app打開(“ios::app|ios::out”),不管有沒有文件,打開都是失敗。 ?
以ios::ate打開(“ios::ate|ios::out”),如果沒有文件,打開失敗 ?
如果有文件,打開成功,并定位到文件尾,但是不能寫文件 ?


fstream流,默認是ios::in,所以如果沒有文件,ios::app和ios::ate都是失敗, ?
以ios::app|ios::out,如果沒有文件則創建文件,如果有文件,則在文件尾追加 ?
以ios::ate|ios::out打開,如果沒有文件則創建文件,如果有,則清空文件。 ?
以ios::ate|ios::out|ios::in打開,如果沒有文件,則打開失敗,有文件則定位到文件尾 ?

可見:ios::app不能用來打開輸入流,即不能和ios::in相配合 ?
而ios::ate可以和ios::in配合,此時定位到文件尾;如果沒有ios::in相配合而只是同ios::out配合,那么將清空原文件 ?

可以在《C++ ?輸入輸出流及本地化》1.4.2中找到更詳細的描述:(大意)以ios::app方式打開文件,即使修改文件指針,也只能輸出到文件尾。實際上以 ios::app打開的文件的

總結

以上是生活随笔為你收集整理的ios::app与ios::ate打开方式有什么不同??的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。