本次記錄檔案操作,還請各位大佬批評指正!
程式執行時產生的資料都屬於臨時資料,程式一旦執行結束都會被釋放。通過檔案可以將資料持久化。c++中對檔案操作需要包含標頭檔案 < fstream >。
檔案型別分為兩種:
1、文字檔案 - 檔案以文字的ascii碼形式儲存在計算機中;
2、二進位制檔案 - 檔案以文字的二進位制形式儲存在計算機中,使用者一般不能直接讀懂它們。
操作檔案的三大類:
1、ofstream:寫操作 0 - output
2、ifstream:讀操作 i - input
3、fstream:讀寫操作
寫檔案步驟如下:
1、包含標頭檔案 #include
2、建立流物件 ofstream ofs;
3、開啟檔案 ofs.open(「檔案路徑」,開啟方式);
4、寫資料 ofs<<「寫入的資料」;
5、關閉檔案 ofs.close();
檔案開啟方式:
開啟方式解釋
ios::in為讀檔案而開啟檔案
ios::out為寫檔案而開啟檔案
ios::binary二進位制方式
ios::ate
初始位置:檔案尾
追加方式寫檔案
ios::trunc
如果檔案存在先刪除,再建立
注意:檔案開啟方式可以配合使用,利用 | 操作符。
例如:用二進位制方式寫檔案 ios::binary | ios::out
#include
#include
#include
#include
//1、包含標頭檔案
using
namespace std;
//文字檔案 寫檔案
void
test01()
intmain()
總結:
1、檔案操作必須包含標頭檔案 fstream;
2、讀檔案可以利用 ofstream 或者 fstream類;
3、開啟檔案時候需要制定操作檔案的路徑以及開啟方式;
4、利用《可以向檔案中寫資料;
5、操作完畢要關閉檔案。
讀檔案與寫檔案步驟相似,但是讀取方式相對較多。
讀檔案步驟如下:
1、包含標頭檔案 #include
2、建立流物件 ifstream ifs;
3、開啟檔案並判斷檔案是否成功開啟 ifs.open(「檔案路徑」,開啟方式);
4、讀資料 四種方式讀取
5、關閉檔案 ifs.close();
#include
#include
#include
#include
//1、包含標頭檔案
using
namespace std;
//讀檔案
void
test01()
//4、讀資料 四種方式讀取
//第一種
char buf[
1024]=
;while
(ifs >> buf)
第二種//char buf[1024] = ;
//while (ifs.getline(buf,sizeof(buf)))
//第三種
//string buf;
//while (getline(ifs,buf))
//第四種 不推薦
//char c;
//while ((c = ifs.get()) != eof) //eof end of file
////5、關閉檔案
ifs.
close()
;}intmain()
總結:
1、讀檔案可以利用 ifstream 或者 fstream類;
2、利用is_open函式可以判斷檔案是否開啟成功;
3、close關閉檔案。
以二進位制的方式對檔案進行讀寫操作,開啟方式要指定為ios::binary
二進位制方式寫檔案主要利用流物件呼叫成員函式 write。
函式原型:ofstream& write(const char * buffer,int len);
引數解釋:字元指標buffer指向記憶體中一段儲存空間;len是讀寫的位元組數。
#include
#include
#include
#include
//1、包含標頭檔案
using
namespace std;
//二進位制檔案 寫檔案
class
person
;void
test01()
; ofs.
write((
const
char*)
&p,sizeof
(person));
//5、關閉檔案
ofs.
close()
;}intmain()
總結:檔案輸出流物件可以通過write函式,以二進位制方式寫資料。
二進位制方式讀檔案主要利用流物件呼叫成員函式read。
函式原型:ifstream& read(char *buffer, int len);
引數解釋:字元指標buffer指向記憶體中一段儲存空間;len是讀寫的位元組數。
#include
#include
#include
#include
//1、包含標頭檔案
using
namespace std;
//讀檔案
class
person
;void
test01()
//4、讀資料
person p;
ifs.
read((
char*)
&p,sizeof
(person));
cout <<
"姓名:"
<< p.m_name <<
"年齡:"
<< p.m_age << endl;
//5、關閉檔案
ifs.
close()
;}intmain()
總結:檔案輸入流物件可以通過read函式,以二進位制方式讀資料。 C 自學筆記
本次記錄結構體,還請各位大佬批評指正!結構體屬於使用者自定義的資料型別,允許使用者儲存不同的資料型別 整型 浮點型 字元型 布林型 即不同資料型別的集合所組成的乙個型別。建立學生資料型別,然後通過學生資料型別建立具體的學生。通過結構體建立變數的方式有三種 1 struct 結構體名 變數名 2 st...
C 自學筆記
本次記錄程式的記憶體分割槽模型,還請各位大佬批評指正!c 程式在執行時,將記憶體大方向劃分為4個區域 1 區 存放函式體的二進位制 有作業系統進行管理 寫的所有 放在該區域 2 全域性區 存放全域性變數和靜態變數以及常量 3 棧區 由編譯器自動分配釋放,存放函式的引數值,區域性變數 4 堆區 由程式...
C 自學筆記
本次記錄函式提高,還請各位大佬批評指正!在c 中,函式的形參列表中的形參是可以有預設值的。語法 返回值型別 函式名 引數 預設值 注意事項 1 如果某個位置有預設引數,那麼從這個位置之後,從左往右都必須有預設值。2 如果函式的宣告有預設引數,那麼函式的實現就不能有預設引數。宣告和實現只能有乙個有預設...