zoukankan      html  css  js  c++  java
  • 《轉貼》關於 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配合的話,將清空原文件。

  • 相关阅读:
    JAVA基础学习之路(九)[2]String类常用方法
    [MYSQL]练习(一)
    JAVA基础学习之路(十一)引用传递
    java--多线程编程简介
    序列化和反序列化的理解
    简单的socket编程
    php-生成数据库设计文档
    centos7 jenkins安装和使用
    centos7 rabbitmq安装以及应用
    centos7 dubbokeeper安装
  • 原文地址:https://www.cnblogs.com/awen/p/2647350.html
Copyright © 2011-2022 走看看