1. 程式人生 > >C++檔案的開啟與關閉

C++檔案的開啟與關閉

檔案的基本概念

本節中檔案指的是磁碟檔案

C++根據檔案(file)內容的資料格式,可分為兩類:

  • 文字檔案:由字元序列組成,在文字檔案中存取的最小資訊單位為字元(character),也稱ASCII碼檔案。
  • 二進位制檔案:存取的最小資訊單位為位元組(Byte)。

C++把每個檔案都看成一個有序的位元組流,每一個檔案或者以檔案結束符(end of file marker)結束,或者在特定的位元組號處結束,如下圖所示。

當開啟一個檔案時,該檔案就和某個流關聯起來了。對檔案進行讀寫實際上受到一個檔案定位指標(file position pointer)的控制。

輸入流的指標也稱為讀指標,每一次提取操作將從讀指標當前所指位置開始,每次提取操作自動將讀指標向檔案尾移動。輸出流指標

也稱寫指標,每一次插入操作將從寫指標當前位置開始,每次插入操作自動將寫指標向檔案尾移動。

檔案的開啟與關閉

檔案使用的5步驟:
①說明一個檔案流物件,這又被稱為內部檔案:
    ifstream ifile;//只輸入用
   ofstream ofile;//只輸出用
    fstream iofile;//既輸入又輸出用

②使用檔案流物件的成員函式開啟一個磁碟檔案。這樣在檔案流物件和磁碟檔名之間建立聯絡。檔案流中說明了三個開啟檔案的成員函式。
    void ifstream::open(const char*,int=ios::in,int=filebuf::openprot);
    voidofstream::open(const char*,int=ios::out,int=filebuf::openprot);
    void fstream::open(const char*,int,int=filebuf::openprot);


第一個引數為要開啟的磁碟檔名。第二個引數為開啟方式,有輸入(in),輸出(out)等,開啟方式在ios基類中定義為列舉型別。第三個引數為指定開啟檔案的保護方式,一般取預設。所以第二步可如下進行:
    iofile.open(“myfile.txt”,ios::in|ios::out);

上面三個檔案流類都過載了一個帶預設引數的建構函式,功能與open函式一樣:
    ifstream::ifstream(const char*,int=ios::in,int=filebuf::openprot);
    ofstream::ofstream(const char*,int=ios::out,int=filebuf::openprot);
    fstream::fstream(const char*,int,int=filebuf::operprot);


所以①和②兩步可合成: fstream iofile(”myfile.txt”,ios::in|ios::out);

③開啟檔案也應該判斷是否成功,若成功,檔案流物件值為非零值,不成功為0(NULL),檔案流物件值物理上就是指它的地址。因此開啟一個檔案完整的程式為:
fstream iofile(”myfile.txt”,ios::in|ios::out);
if(!iofile)
{ //“!”為過載的運算子
       cout<<”不能開啟檔案:”<<”myfile,txt”<<endl;
       return -1;
} //失敗退回作業系統

④使用提取和插入運算子對檔案進行讀寫操作,或使用成員函式進行讀寫,這在下一節中討論。

⑤關閉檔案。三個檔案流類各有一個關閉檔案的成員函式 :
    void ifstream::close();
    void ofstream::close();
    void fstream::close();

使用很方便,如:
    iofile.close();

關閉檔案時,系統把該檔案相關聯的檔案緩衝區中的資料寫到檔案中,保證檔案的完整,收回與該檔案相關的記憶體空間,可供再分配,把磁碟檔名與檔案流物件之間的關聯斷開,可防止誤操作修改了磁碟檔案。如又要對檔案操作必須重新開啟。

關閉檔案並沒有取消檔案流物件,該檔案流物件又可與其他磁碟檔案建立聯絡。檔案流物件在程式結束時,或它的生命期結束時,由解構函式撤消。它同時釋放內部分配的預留緩衝區。

相關推薦

c++檔案開啟關閉

MFC主要讀寫檔案的類是CFile,而CStdioFile類是派生自CFile類的,主要增加了一個按行的方式讀取/寫入檔案每行字串的功能!別的地方沒咋研究! //CFile讀取所有檔案到緩衝區: CFile file; char buffer[1024]; if(!file.Open("c://aaa.txt

C語言檔案開啟關閉

C語言檔案的開啟與關閉 在C語言中,檔案操作都是由庫函式來完成的。 檔案的開啟(fopen函式) fopen() 函式用來開啟一個檔案,它的原型為: FILE *fopen(char *filename, char *mode); filename為檔名(包括檔案路徑),mo

C++檔案開啟關閉

檔案的基本概念 本節中檔案指的是磁碟檔案。 C++根據檔案(file)內容的資料格式,可分為兩類: 文字檔案:由字元序列組成,在文字檔案中存取的最小資訊單位為字元(character),也稱ASCII碼檔案。 二進位制檔案:存取的最小資訊單位為位元組(Byte)。 C++

Linux C程式設計學習筆記(2):open、creat、close函式及檔案的建立、開啟關閉

my_create.c #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include

檔案開啟關閉

開啟模式: t   ----   文字檔案模式,預設值 b  ----  二進位制檔案模式 r  ----  只讀模式,預設模式,檔案不存在,返回FileNotFoundError異常 w ----  覆蓋寫模式

python3基礎(八)-檔案開啟關閉

1、開啟檔案,或新建一個檔案 2、讀/寫資料 3、關閉檔案 f=open("test.txt", "w") “test.txt”是檔名,但是它自動建立的檔案的目錄是當前目錄下(相對路徑),所以最好在這個地方指定一個絕對路徑,比如~/home/zhantao/test.txt f.writ

檔案操作介紹,檔案開啟關閉

<1>什麼是檔案 示例如下: 檔案格式 <2>檔案的作用 大家應該聽說過一句話:“好記性不如爛筆頭”。 不僅人的大腦會遺忘事情,計算機也會如此,比如一個程式在執行過程中用了九牛二虎之力終於計算出了結果,試想一下如果不把這些資料存放起來,相比重啟電腦之後,“哭

window 區域網下檔案共享的開啟關閉方法

在一個區域網絡內部,我們可以開啟檔案共享,在windows 資源管理器中可以實現簡單的檔案讀寫和拷貝。這篇部落格主要先介紹簡單的開啟與關閉的方法,後一篇部落格中會介紹如何用java實現檔案讀寫,包

php開啟關閉錯誤提示

php.ini target spa style 目錄 http ubuntu linux系統 spl linux系統下: 1. 打開php.ini文件。 以我的ubuntu為例,這個文件在: /etc/php5/apache2 目錄下。 2. 搜索並修改下行,把Of

作業19——夜間模式的開啟關閉,父模板的制作

amp https str clas mys tac 夜間模式 mage get 夜間模式的開啟與關閉 放置點擊的按鈕或圖片。 定義開關切換函數。 onclick函數調用。 父模板的制作 制作網站網頁共有元素的父模板html,包括頂部導航,中間區塊劃分,底部導航,底部說

夜間模式的開啟關閉,父模板的制作

制作網站 定義 css 問題 hit img date 註冊 uname 夜間模式的開啟與關閉 放置點擊的按鈕或圖片。 定義開關切換函數。 onclick函數調用。 父模板的制作 制作網站網頁共有元素的父模板html,包括頂部導航,中間區塊劃分,底部導航,底部說明等。

Mongodb默認開啟關閉

日誌 普通 clas gap 有一個 9.1 後臺 過程 最終 默認啟動: $ ./mongodb 默認數據保存路徑:/data/db/ 默認端口:27017 修改默認路徑: --dbpath $ ./mongdb --dbpath /mongodb/

tp5--開啟關閉調試模式

png alt blog fin cat https lan .html tps https://www.cnblogs.com/finalanddistance/p/8906000.html   在TP5中,我們運行的代碼有錯誤無法執行時,只顯示頁面錯誤,而不顯

Bootstrap開啟模態框後對資料處理(標記模態框的開啟關閉狀態)

JS用全域性變數標記狀態,方法中動態修改全域性變數以標記狀態是一個重要思想。     需求:組合條件查詢資料,查詢完之後填充到模態框中,開啟模態框,模態框中有組合條件查詢,此時查詢只需要更新模態框表格資料不需要開啟模態框,也就是讓模態框開啟方法執行一次。 (點查詢的時候只更新資料不會再次開啟模

php自定義選單模組的開啟關閉

最近專案中要用到選單的開啟與關閉,自己研究了一下,專案使用的框架分別是ThinkPHP5 和 H-ui.admin,因為一開始做了許可權,使用的是ThinkPHP5定義過的Auth.php,在tb_auth_group.sql資料表中新增module欄位,儲存方式:一級選單鍵值加“-”連結二級選

noip的c++檔案操作標頭檔案

看一些人寫這些真的心累 首先標頭檔案。 #include <bits/stdc++.h> using namespace std; 可以用!相信我,親測,說不能用的都不是好老師!其他都不要加,這一條包含了一切。 然後是檔案操作。 freopen(“題

【macOS】SIP開啟關閉

當使用proxychains代理macOS的curl或者lldb除錯macOS 應用時常會遇到SIP的問題。關於SIP的比較好的介紹可以參考這裡:https://www.zhihu.com/question/40239893   SIP官方文件參考這裡:https://dev

Android之四大元件(Service的開啟關閉)

個人開發的微信小程式,目前功能是書籍推薦,後續會完善一些新功能,希望大家多多支援! 前言 服務(Service)是Android系統中的四大元件之一。服務主要用於兩個目的:後臺執行和跨程序訪問。通過啟動 一個服務,可以在不顯示介面的前提下在後臺執行指定的

CentOS6及7下埠開啟關閉

--centos 7.0 firewall-cmd --zone=public --add-port=8080/tcp --peranmentfirewall-cmd --zone=public --add-port=8081/tcp --peranment --關閉防火牆

c++檔案開啟模式的有效組合

開啟模式:in:開啟檔案時做讀操作;out:開啟檔案時做寫操作;app:在每次寫之前找到檔案尾;ate:開啟檔案後立即將檔案定位在檔案尾;trunc:開啟檔案時清空已存在的檔案流;binary:以二進位制模式進行IO操作;有效組合:並不是所有的開啟模式都可以同時制定,有些模