• 《轉貼》關於 ios::app 與 ios::ate 簡易說明


    來源: http://topic.csdn.net/t/20050103/21/3696236.html
    作者: tanjie
    內容:

    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打開的文件的寫入,和文件指針五關。

    奇怪的是:《C++輸入輸出流及當地語系化》和《C++程式設計思想》都說以ios::ate打開的檔,檔指標都會定位到檔案結尾且不清空檔,但是我發現ios::ate如果不和ios::in配合的話,將清空原文件。

  • 相关阅读:
    关键性点位
    【转】Chrome——F12 谷歌开发者工具详解
    LPR-贷款市场报价利率
    盘口-挂单
    看盘
    复盘
    2020超星尔雅后台挂课工具(完全免费)
    Codeup 问题 D: String Subtraction (20)
    维瓦尔第协奏曲《四季》赏析 (Antonio Vavildi 《The Four Seasons》)
    算法4-5:求子串位置的定位函数
  • 原文地址:https://www.cnblogs.com/awen/p/2647350.html
Copyright © 2020-2023  润新知