在线二区人妖系列_国产亚洲欧美日韩在线一区_国产一级婬片视频免费看_精品少妇一区二区三区在线

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

文件和流

到目前為止,我們一直在使用 iostream 標準庫,它提供了 cin 及 cout方法,分別用于讀取標準輸入以及寫入標準輸出。

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

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

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

打開文件

需要對一個文件進行讀寫操作時必須先打開該文件。 ofstream 或 fstream 對象可以用來打開一個文件并且寫入; ifstream 對象用于以讀入打開一個文件。

下面是 open()函數(shù)的標準語法,它是 fstream,ifstream,ofstream 對象的成員。

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

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

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

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

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

同樣,你可以以讀入和寫入目的打開一個文件如下:

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

關(guān)閉文件

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

下面是標準的 close() 函數(shù)語法,它是一個 fstream,ifstream,以及 ofstream對象的成員。

    void close();

寫文件

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

讀文件

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

讀取與寫入樣例

下面是一段 C++ 程序,以讀取和寫入方式打開一個文件。將用戶輸入的信息寫入文件后以 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;
    }

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

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

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

文件位置指針

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

seekg 和 seekp 通常的參數(shù)是一個長整型??梢灾付ǖ诙€參數(shù)為尋找方向。尋找方向可以 ios: :beg (默認)定位相對于流的開始, io: :scur 定位相對于當前位置的流或 ios::end 定位相對于流的結(jié)束。

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

文件位置指針是一個整數(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 );
上一篇:操作符下一篇:指針