在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C/ 文件和流
動(dòng)態(tài)內(nèi)存
類和對(duì)象
接口 (抽象類)
結(jié)構(gòu)體
循環(huán)的類型
函數(shù)
數(shù)字
日期和時(shí)間
基本語(yǔ)法
多態(tài)
數(shù)據(jù)抽象
注釋
命名空間
字符串
預(yù)處理器
決策語(yǔ)句
修飾符的類型
鍙橀噺綾誨瀷
基本輸入輸出
操作符
數(shù)組
模板
多線程
繼承
Web 編程
信號(hào)處理
指針
存儲(chǔ)類型
概述
引用
常量
異常處理
開(kāi)發(fā)環(huán)境
重載
變量作用域
數(shù)據(jù)類型
數(shù)據(jù)封裝
文件和流

文件和流

到目前為止,我們一直在使用 iostream 標(biāo)準(zhǔn)庫(kù),它提供了 cin 及 cout方法,分別用于讀取標(biāo)準(zhǔn)輸入以及寫入標(biāo)準(zhǔn)輸出。

本教程將教你如何從文件中讀取和寫入。這需要另一個(gè)稱為 fstream 的標(biāo)準(zhǔn) C++ 庫(kù),它定義了三個(gè)新的數(shù)據(jù)類型:

數(shù)據(jù)類型 描述
ofstream 這個(gè)數(shù)據(jù)類型表示輸出文件流,用于創(chuàng)建文件以及將信息寫入文件。
ifstream 這個(gè)數(shù)據(jù)類型表示輸入文件流,用于從文件讀取信息。
fstream 這個(gè)數(shù)據(jù)類型通常表示該文件流,兼?zhèn)溆?ofstream 和 ifstream 功能,這意味著它可以創(chuàng)建文件,編寫文件,以及讀文件。

使用 C++ 執(zhí)行文件處理時(shí),頭文件<iostream><fstream>必須包含在你的 C++ 源文件里面。

打開(kāi)文件

需要對(duì)一個(gè)文件進(jìn)行讀寫操作時(shí)必須先打開(kāi)該文件。 ofstream 或 fstream 對(duì)象可以用來(lái)打開(kāi)一個(gè)文件并且寫入; ifstream 對(duì)象用于以讀入打開(kāi)一個(gè)文件。

下面是 open()函數(shù)的標(biāo)準(zhǔn)語(yǔ)法,它是 fstream,ifstream,ofstream 對(duì)象的成員。

    void open(const char *filename, ios::openmode mode) ;

在這里,第一個(gè)參數(shù)指定文件的名稱和打開(kāi)位置,open()成員函數(shù)的第二個(gè)參數(shù)定義了文件應(yīng)該以哪種模式被打開(kāi)。

模式標(biāo)志 描述
ios::app 追加模式。所有輸出文件附加到結(jié)尾。
ios::ate 為輸出打開(kāi)一個(gè)文件并將讀/寫控制移動(dòng)到文件的末尾。
ios::in 打開(kāi)一個(gè)文件去讀。
ios::out 打開(kāi)一個(gè)文件去寫。
ios::trunc 如果文件已經(jīng)存在,打開(kāi)該文件前文件中的內(nèi)容將被清空。 。

您可以通過(guò)邏輯運(yùn)算將兩個(gè)或更多的這些值組合到一起。例如, 如果你想以寫方式打開(kāi)一個(gè)文件, 并且想在其打開(kāi)之前清空內(nèi)容,以防它已經(jīng)存在的話,使用一下語(yǔ)法規(guī)則:

    ofstream outfile;
    outfile.open("file.dat", ios::out | ios::trunc );

同樣,你可以以讀入和寫入目的打開(kāi)一個(gè)文件如下:

    fstream  afile;
    afile.open("file.dat", ios::out | ios::in );

關(guān)閉文件

一個(gè) C++ 程序終止時(shí)它會(huì)自動(dòng)關(guān)閉所有流,釋放所有分配的內(nèi)存并關(guān)閉所有打開(kāi)的文件。但在終止之前,程序員應(yīng)該關(guān)閉所有打開(kāi)的程序文件始終是一個(gè)很好的實(shí)習(xí)慣。

下面是標(biāo)準(zhǔn)的 close() 函數(shù)語(yǔ)法,它是一個(gè) fstream,ifstream,以及 ofstream對(duì)象的成員。

    void close();

寫文件

在使用 C++ 編程時(shí),你通過(guò)程序使用流插入操作符(< <)將信息寫入文件,使用流插入操作符(< <)就像你使用鍵盤輸入將信息輸出到屏幕上。唯一的區(qū)別是, 你使用一個(gè) ofstream 或 fstream 對(duì)象而不是 cout。

讀文件

您使用留提取符 (>>) 將文件中的信息讀入程序就像你使用該運(yùn)營(yíng)商從鍵盤輸入信息。唯一的區(qū)別是,你使用一個(gè) ifstream 或 fstream 對(duì)象而不是 cin 的對(duì)象。

讀取與寫入樣例

下面是一段 C++ 程序,以讀取和寫入方式打開(kāi)一個(gè)文件。將用戶輸入的信息寫入文件后以 afile.dat 命名文件。程序從文件中讀取信息并輸出在屏幕上:

    #include <fstream>
    #include <iostream>
    using namespace std;

    int main ()
    {

       char data[100];

       // open a file in write mode.
       ofstream outfile;
       outfile.open("afile.dat");

       cout << "Writing to the file" << endl;
       cout << "Enter your name: "; 
       cin.getline(data, 100);

       // write inputted data into the file.
       outfile << data << endl;

       cout << "Enter your age: "; 
       cin >> data;
       cin.ignore();

       // again write inputted data into the file.
       outfile << data << endl;

       // close the opened file.
       outfile.close();

       // open a file in read mode.
       ifstream infile; 
       infile.open("afile.dat"); 

       cout << "Reading from the file" << endl; 
       infile >> data; 

       // write the data at the screen.
       cout << data << endl;

       // again read the data from the file and display it.
       infile >> data; 
       cout << data << endl; 

       // close the opened file.
       infile.close();

       return 0;
    }

當(dāng)上面的代碼被編譯并執(zhí)行,將產(chǎn)生如下的樣本和輸出:

    $./a.out
    Writing to the file
    Enter your name: Zara
    Enter your age: 9
    Reading from the file
    Zara
    9

上面的例子利用 cin 對(duì)象額外的功能,如利用 getline()函數(shù)來(lái)從外部讀取線,用 ignor()函數(shù)忽略先前讀取語(yǔ)句留下的額外字符。

文件位置指針

istream 和 ostream 是用來(lái)重新定位文件位置的指針成員函數(shù)。這些成員函數(shù)有 seekg (“seek get”) istream 和 seekp 上 ostream (“seek put”)。

seekg 和 seekp 通常的參數(shù)是一個(gè)長(zhǎng)整型。可以指定第二個(gè)參數(shù)為尋找方向。尋找方向可以 ios: :beg (默認(rèn))定位相對(duì)于流的開(kāi)始, io: :scur 定位相對(duì)于當(dāng)前位置的流或 ios::end 定位相對(duì)于流的結(jié)束。

文件位置指針是一個(gè)整數(shù)值,它指定文件的位置作為一個(gè)從文件的開(kāi)始位置的字節(jié)數(shù)。

文件位置指針是一個(gè)整數(shù)值,它指定文件的位置。定位 “get” 文件位置指針的一些示例如下:

    // position to the nth byte of fileObject (assumes ios::beg)
    fileObject.seekg( n );

    // position n bytes forward in fileObject
    fileObject.seekg( n, ios::cur );

    // position n bytes back from end of fileObject
    fileObject.seekg( n, ios::end );

    // position at end of fileObject
    fileObject.seekg( 0, ios::end );
上一篇:操作符下一篇:指針