C 研發 核心篇 第五講 檔案操作

2021-10-19 09:00:39 字數 4249 閱讀 6185

程式執行時產生的資料都屬於臨時資料,程式一旦執行結束都會被釋放

通過檔案可以將資料持久化

c++中對檔案操作需要包含標頭檔案 < fstream >

檔案型別分為兩種:

文字檔案- 檔案以文字的ascii碼形式儲存在計算機中

二進位制檔案- 檔案以文字的二進位制形式儲存在計算機中,使用者一般不能直接讀懂它們

操作檔案的三大類:

ofstream:寫操作

ifstream: 讀操作

fstream : 讀寫操作

5.1.1寫檔案

寫檔案步驟如下:

包含標頭檔案

#include

建立流物件

ofstream ofs;

開啟檔案

ofs.open(「檔案路徑」,開啟方式);

寫資料ofs << 「寫入的資料」;

關閉檔案

ofs.close();

檔案開啟方式:

開啟方式

解釋ios::in

為讀檔案而開啟檔案

ios::out

為寫檔案而開啟檔案

ios::ate

初始位置:檔案尾

追加方式寫檔案

ios::trunc

如果檔案存在先刪除,再建立

ios::binary

二進位制方式

注意:檔案開啟方式可以配合使用,利用|操作符

**例如:**用二進位制方式寫檔案ios::binary | ios:: out

示例:

#include void test01()

int main()

總結:

5.1.2讀檔案

讀檔案與寫檔案步驟相似,但是讀取方式相對於比較多

讀檔案步驟如下:

包含標頭檔案

#include

建立流物件

ifstream ifs;

開啟檔案並判斷檔案是否開啟成功

ifs.open(「檔案路徑」,開啟方式);

讀資料四種方式讀取

關閉檔案

ifs.close();

示例:

#include #include void test01()

//第一種方式

//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)

ifs.close();

}int main()

總結:

以二進位制的方式對檔案進行讀寫操作

開啟方式要指定為 ios::binary

5.2.1 寫檔案

二進位制方式寫檔案主要利用流物件呼叫成員函式write

函式原型 :ostream& write(const char * buffer,int len);

引數解釋:字元指標buffer指向記憶體中一段儲存空間。len是讀寫的位元組數

示例:

#include #include class person

;//二進位制檔案 寫檔案

void test01()

; //4、寫檔案

ofs.write((const char *)&p, sizeof(p));

//5、關閉檔案

ofs.close();

}int main()

總結:

5.2.2 讀檔案

二進位制方式讀檔案主要利用流物件呼叫成員函式read

函式原型:istream& read(char *buffer,int len);

引數解釋:字元指標buffer指向記憶體中一段儲存空間。len是讀寫的位元組數

示例:

#include #include class person

;void test01()

person p;

ifs.read((char *)&p, sizeof(p));

cout << "姓名: " << p.m_name << " 年齡: " << p.m_age << endl;

}int main()

void storage()

};//lenovo廠商

class lenovocpu :public cpu

};class lenovovideocard :public videocard

};class lenovomemory :public memory

};void test01()

int main()

總結:

5.1.2讀檔案

讀檔案與寫檔案步驟相似,但是讀取方式相對於比較多

讀檔案步驟如下:

包含標頭檔案

#include

建立流物件

ifstream ifs;

開啟檔案並判斷檔案是否開啟成功

ifs.open(「檔案路徑」,開啟方式);

讀資料四種方式讀取

關閉檔案

ifs.close();

示例:

#include #include void test01()

//第一種方式

//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)

ifs.close();

}int main()

總結:

以二進位制的方式對檔案進行讀寫操作

開啟方式要指定為 ios::binary

5.2.1 寫檔案

二進位制方式寫檔案主要利用流物件呼叫成員函式write

函式原型 :ostream& write(const char * buffer,int len);

引數解釋:字元指標buffer指向記憶體中一段儲存空間。len是讀寫的位元組數

示例:

#include #include class person

;//二進位制檔案 寫檔案

void test01()

; //4、寫檔案

ofs.write((const char *)&p, sizeof(p));

//5、關閉檔案

ofs.close();

}int main()

總結:

5.2.2 讀檔案

二進位制方式讀檔案主要利用流物件呼叫成員函式read

函式原型:istream& read(char *buffer,int len);

引數解釋:字元指標buffer指向記憶體中一段儲存空間。len是讀寫的位元組數

示例:

#include #include class person

;void test01()

person p;

ifs.read((char *)&p, sizeof(p));

cout << "姓名: " << p.m_name << " 年齡: " << p.m_age << endl;

}int main()

C 研發 核心篇 第四講 4 7 多型

4.7.1 多型的基本概念 多型是c 物件導向三大特性之一 多型分為兩類 靜態多型和動態多型區別 下面通過案例進行講解多型 class animal class cat public animal class dog public animal 我們希望傳入什麼物件,那麼就呼叫什麼物件的函式 如果函...

C 研發 核心篇 第四講 4 5 運算子過載

運算子過載概念 對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別 作用 實現兩個自定義資料型別相加的運算 class person person int a,int b 成員函式實現 號運算子過載 person operator const person p public int ...

資料庫 第五講 其他操作

1.除法操作 這個部落格寫的挺好的 2.外連線操作 連線操作時只有匹配的結果保留 外連線將對與非匹配元組填充null 三種外連線 a.左外連線,連線結果保留左關係所有元組 b.右外連線,連線結果保留右關係所有元組 c.全連線,連線結果保留左右關係所有元組 外並操作 為並操作的擴充套件,可以對非相容性...