在c++中,對檔案的操作是通過stream的子類fstream(file stream)來實現的,在標頭檔案中定義
一、開啟檔案
fstream類的成員函式open(),原形:void open(const char *filename,int mode,int access)
filename:開啟的檔案名字 mode:開啟檔案的方式 access:開啟檔案的屬性
開啟檔案的屬性:
0:普通檔案,開啟訪問 1:唯讀檔案
2:隱藏檔案 4:系統檔案
可以用「或(|)」或者「+」把以上屬性連線起來
如果open函式只有檔名---乙個引數,則以讀/寫普通檔案開啟
例:file1.open("c://config.sys");<*****=>file1.open("c://config.sys",in|out,0);
二、關閉檔案
fstream提供成員函式close()來操作
三、讀寫操作
1、file2<< "i love you"; //向檔案寫入字串「i love you」
int i;
file2>>i; //從檔案讀出乙個整數值i
2、二進位制檔案的讀寫
(1) put()
put()函式向流寫入乙個字元。原形為ofstream &put(char ch);
file1.put('c');就是向流寫乙個字元'c'
(2) get()
get()函式有三種過載形式:
第一種:ifstream &get(char &ch):從流中讀取乙個字元,結果儲存在引用ch中。如果到檔案 尾則返回空字元
第二種:file2.get(x);表示從檔案中讀取乙個字元,儲存在x中。達到檔案尾則返回eof
第三種:ifstream &get(char *buf,int num,char delim='/n'); 把字元讀入由buf指向的數 組,直到讀入num個字元或遇到由delim指定的字元。如果沒有delim這個引數,就使用預設置 換行符'/n'
四、檔案定位
c++的檔案定位分為讀位置和寫位置的定位
seekg()設定讀位置 seekp()設定寫位置
istream &seekg(streamoff offset,seek_dir origin);
ostream &seekp(streamoff offset,seek_dir origin);
offset 偏移量 seek_dir 移動的基準位置
seek_dir是值為列舉型別:beg 檔案開頭;cur 當前位置;end 結尾
以上兩個函式一般用於二進位制檔案
file1.seekg(1234,cur); //把檔案的讀指標從當前位置後移1234個位元組
ifstream input;
vector::const_iterator iter=files.begin();
while( iter!=files.end() )
while( input>>s )
input.close();
input.clear(); //開啟已存在的流物件,必須在每次偏移迴圈時關閉和清空
++iter;
}
每個io類定義了三個iostate型別的常量值,分別表示特定的位模式:
badbit標誌著系統級的故障,如無法恢復的讀寫錯誤
failbit標誌著希望獲得數值型資料而輸入了字元,這種導致設定failbit的問題通常可以修正
eofbit標誌著遇到檔案結束符,此時同時還設定了failbit
流的狀態由bad、fail、eof和good操作揭示。clear和setstate操作用於改變條件成員狀態
int ival;
//read cin and test only for eof;loopis executed even if there are other io failures
while( cin>>ival,cin.eof() ) //先讀取,然後返回是否到達檔案結束
if( cin.fail() )
}輸入緩衝區的重新整理:
cout<< "hi" 使用os.path 模組中的函式來完成多數操作 使用os.path 來進行檔案測試是很簡單的。在寫這些指令碼時,可能唯一需要注意的就是你需要考慮檔案許可權的問題,特別是在獲取元資料時候 import os path users beazley data data.csv get the last c... 1.內建函式 inline必須在呼叫前進行完整定義,語 define相同,但是消除了不安全性 例 inline float circle float r 2,函式原型 語法形式 返回型別 函式名 參數列 1 函式原型的參數列中不包含引數的名字,而只包含型別 2 函式定義由函式說明部分和函式體構成 3... c陷阱和缺陷 1.賦值符優先順序比邏輯比較低,賦值表示式的結果為賦值後的結果 2.編譯器掃瞄符號使用貪心法,盡量選擇最長字元的符號串,如a 理解為a 而不是a 3.為相容老版本編譯器,不同符號之間最好加空格,如a 1可能理解為a 1,應該改為a 1 4.老版本編譯器,8進製數以0開始,後面可以加超過...檔案目錄操作 cookbook讀書筆記
C 讀書筆記
C 讀書筆記