fstream標頭檔案

2021-07-26 12:34:39 字數 2901 閱讀 3102

ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體,其實所謂的流緩衝就是記憶體空間

在c++中,有乙個stream這個類,所有的i/o都以這個「流」類為基礎的,包括我們要認識的檔案i/o.

stream這個類有兩個重要的運算子:

1、插入器(<<)

向流輸出資料。比如說系統有乙個預設的標準輸出流(cout),一般情況下就是指的顯示器,所以,cout<<」write stdout」<<』\n』;就表示把字串」write stdout」和換行字元(『\n』)輸出到標準輸出流。

2、析取器(>>)

從流中輸入資料。比如說系統有乙個預設的標準輸入流(cin),一般情況下就是指的鍵盤,所以,cin>>x;就表示從標準輸入流中讀取乙個指定型別的資料。

在c++中,對檔案的操作是通過stream的子類fstream(file stream)來實現的,所以,要用這種方式操作檔案,就必須加入標頭檔案fstream.h。

常見的檔案操作:
一、開啟檔案

在fstream類中,有乙個成員函式open(),就是用來開啟檔案的,其原型是:

void open(const char* filename,int mode,int access);

引數:

filename:  要開啟的檔名

mode:    要開啟檔案的方式

access:   開啟檔案的屬性

開啟檔案的方式在類ios(是所有流式i/o類的基類)中定義.

可以用「或」把以上屬性連線起來,如ios::out|ios::binary

開啟檔案的屬性取值是:

0:普通檔案,開啟訪問

1:唯讀檔案

2:隱含檔案

4:系統檔案

可以用「或」或者「+」把以上屬性連線起來,如3或1|2就是以唯讀和隱含屬性開啟檔案。

例如:以二進位制輸入方式開啟檔案c:\config.sys

fstream file1;

file1.open(「c:\config.sys」,ios::binary|ios::in,0);

如果open函式只有檔名乙個引數,則是以讀/寫普通檔案開啟,即:

file1.open(「c:\config.sys」); <=> file1.open(「c:\config.sys」,ios::in|ios::out,0);

另外,fstream還有和open()一樣的建構函式,對於上例,在定義的時侯就可以開啟檔案了:

fstream file1(「c:\config.sys」);  

特別提出的是,fstream有兩個子類:
ifstream(input file stream)和ofstream(outpu file stream),

ifstream預設以輸入方式開啟檔案

ofstream預設以輸出方式開啟檔案。

ifstream file2(「c:\pdos.def」);//以輸入方式開啟檔案

ofstream file3(「c:\x.123」);//以輸出方式開啟檔案  

所以,在實際應用中,根據需要的不同,選擇不同的類來定義:

如果想以輸入方式開啟,就用ifstream來定義;

如果想以輸出方式開啟,就用ofstream來定義;

如果想以輸入/輸出方式來開啟,就用fstream來定義。

二、關閉檔案

開啟的檔案使用完成後一定要關閉,fstream提供了成員函式close()來完成此操作,

如:file1.close();

就把file1相連的檔案關閉。

三、讀寫檔案

讀寫檔案分為文字檔案和二進位制檔案的讀取.

對於文字檔案的讀取比較簡單,用插入器和析取器就可以了;

對於二進位制的讀取就要複雜些,下要就詳細的介紹這兩種方式

用插入器(<<)向檔案輸出;

用析取器(>>)從檔案輸入。

假設file1是以輸入方式開啟,file2以輸出開啟。

示例如下:

file2<<」i love you」;//向檔案寫入字串」i love you」

int i;

file1>>i;//從檔案輸入乙個整數值。

這種方式還有一種簡單的格式化能力,比如可以指定輸出為16進製制等等,具體的格式有以下一些

操縱符 功能 輸入/輸出

dec 格式化為十進位制數值資料 輸入和輸出

endl 輸出乙個換行符並重新整理此流 輸出

ends 輸出乙個空字元 輸出

hex 格式化為十六進製制數值資料 輸入和輸出

oct 格式化為八進位制數值資料 輸入和輸出

setpxecision(int p) 設定浮點數的精度位數 輸出

示例:

#include 

#include

using

namespace

std;

void main( void )

}ofstream file1;

if (!file1)

程式執行後用記事本開啟可以看到資料01

2345

6789

同樣讀取檔案語int data;

ifstream infile("data.txt");

for(int i=0;i<10;i++)

2 字元資料的輸入

字元的輸出方式以put(ch)為存入語句,讀取語句為get(ch)

例如:

char str=」hello this is a c++ programe!\n」

「i know this difference \n」

「and mocive」;

ofstream outfile (「data.txt」);

for(int i=0;i

fstream檔案讀寫

最近在做檔案傳輸,對檔案讀寫稍微有點了解,記錄下來,方便以後查閱,也方便他人參閱。主要介紹了檔案的讀和檔案寫 檔案讀 ifstream ifile ifile.open filename,std ios in std ios binary 開啟方式,所有的檔案都可以用二進位制開啟。if ifile....

fstream讀取檔案

c 中的檔案流有三種 ifstream 由istream派生而來,提供讀檔案的功能 ofstream 由ostream派生而來,提供寫檔案的功能 fstream 由iostream派生而來,提供讀寫同乙個檔案的功能 先說ifstream檔案流,對檔案進行讀操作。從檔案中讀取內容有多種方式.一行一行地...

檔案流fstream 函式

include include include include or stdlib.h for exit const char file 1.txt 我要開啟的當前資料夾中的文字 int main 以追加的方式新增新的內容 if fout.is open cout enter guest names...