c 檔案流操作的個人理解

2021-08-17 14:34:48 字數 3055 閱讀 5666

標頭檔案#include

ifstream  //

以讀取方式開啟,預設模式為

ios::in

ofstream //

以寫入方式開啟,預設模式為

ios::out|ios::trunc(

類似fopen的w

與w+)

fstream            //

以讀寫方式開啟,預設模式為

ios::out|ios::in

關於函式的內容中預設已定義

fstream file(「……」);

實際應為

fstream &.get();

這種形式才對

預設建構函式為.open(),例:

fstream file(「1.txt」);      //

效果等同

fstream file;       file.open(「1.txt」);

開啟模式有以下幾種:

ios::in                以輸入(讀)方式開啟檔案;

ios::out 以輸出(寫)方式開啟檔案;

os::ate             初始位置:檔案尾,檔案開啟後定位到檔案尾;

ios::trunc         如果檔案已存在則先刪除該檔案;

ios::binary       二進位制方式,以二進位制方式開啟檔案;

ios::nocreate 開啟乙個檔案時,如果檔案不存在,不建立檔案;

ios::noreplace         開啟乙個檔案時,如果檔案不存在,建立該檔案;

可以以多種模式開啟檔案,開啟模式為列舉變數,值為0x01、0x04、0x08等,轉為二進位制後相隔乙個位,所以可以用『|』或者『+』運算子來進行多模式並用,例

以附加寫方式開啟檔案

可通過流操作符」<<」來對檔案流變數進行操作,預設以文字方式開啟,若以文字模式流入資料到檔案,資料會被格式化為字元格式,如

int i=100;

char str[20]=」hello」;

ofstream file(「1.txt」);

file << i;            //

執行後檔案

1.txt

內會有文字內容「

100」

file << str;        //

執行後檔案

1.txt

內會有文字內容「

hello

」若以讀方式開啟檔案,有多個函式可以對開啟的檔案流進行操作,如

char i;

chat str[20];

ifstream file(「1.txt」);

file.get(i);        //

效果跟cin.get相似,

此處等效於

i=file.get()

但返回值不一樣

file.get(str,10,』\n』);       

同樣可以跟

cin.get

一樣,最多傳入三個引數

(型別也相同

)file.getline(str,10,』\n』);

也跟cin.getline()

相似,最後乙個結束符預設為『\n』

會把結束符清除

,下一局不會讀到結束符,而

get則會

//留下結束符給下一次讀取

file.get()與file.getline()的不同

message中的內容為:

小明    12    f

小紅    11    m

char str[100];

std::ifstreamfile("./message.txt");

file.get(str,100);

std::cout << str;

std::cout << "next:\n" ;

file.getline(str,100,'~');

std::cout << str;

輸出結果為以下

小明    12    fnext:

小紅    11    m

若把file.get(str,100);

改為file.getline(str,100);

輸出結果則是

小明    12    fnext:

小紅    11    m

可以理解為getline的檔案游標比get偏移了一位;

當傳入兩個引數時,例

file.get(str,10);                  //

預設回車符結束,當超出

10個字元後,超出內容仍留在緩衝區給

//下一次讀取

file.getline(str,10);          //

當超出10

個字元後,超出內容會保留在緩衝區,並且關閉檔案流提取(關閉緩衝區輸出),後面的

get或者

getline

將無法接受超出的內容,可用

file.clear();

重置狀態

file.get()

、file.getline()

的非法操作以及返回值跟

cin.get

、cin.getline

一樣,分別是讀取不到任何東西,僅有

』\0』

,以及讀取到的內容超出指定數目;

其他函式:

fstream file(「1.txt」);

file.seekg(10,ios::beg);  //

檔案游標以檔案頭為原點偏移

10位,

ios::end

為檔案尾。

ios::cur

為當前位置(向後偏移)

file,good();                         //

開啟檔案成功則返回

1,失敗則為0;

file.eof();                             //

游標當前位置是否位於檔案尾(是否讀到檔案尾)

,是則返回

1,否則返回0;

參考**:                      

C 檔案流操作

include stdafx.h include include include include include using namespace std void writecharsettofile const string filename void outputfile const strin...

C 檔案流操作

c 的檔案流本質是利用了乙個buffer中間層,有點類似標準輸出和標準輸入一樣。需要包含的標頭檔案 fstream.h 需要的命名空間 std fstream提供了三個類,用來實現c 對檔案的操作,以下對其做個簡要概述。1.ifstream類 2.ofstream類 3.fstream類 支援的檔案...

C 流檔案操作

c 流檔案操作 開發工具與關鍵技術 visual studio c 流檔案操作 流檔案的基本操作 1.開啟檔案 2.進行讀或者寫的操作 3.關閉檔案 計算機中各種應用系統都把一些資訊組織起來放在外部儲存器,這種組織被稱為檔案,並用檔名作為標識。c 中檔案作為無結構的位元組流 編碼方式 文字方式 二進...