c 學習筆記(15)

2021-10-05 19:23:09 字數 3353 閱讀 7445

讀檔案

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

步驟如下:

1.包含標頭檔案

#include

2.建立流物件

ifstream ifs;

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

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

4.讀資料

四種方式讀取

5.關閉檔案

ifs.close();

#include

void

test1()

//第一種讀取

char buf[

1024]=

;//當資料存入陣列中,利用while迴圈

while

(ifs>>buf)

//利用右移運算子將檔案中的資料讀取到陣列中,當資料

//被全部讀取之後,會自動返回假,while迴圈結束

//第二種

char buf[

1024]=

;while

(ifs.

getline

(buf,

sizeof

(buf)))

//一行一行的去寫入,需要輸入寫入的位址,以為最大寫入的長度

//第三種

string buf;

while

(getline

(ifs,buf)

)//運用全域性函式getline,需要輸入流物件,以及寫入的物件

//第四種

char c;

while

((c = ifs.

get())

!=eof

)//eof是檔案結束的標識,用於判斷是否讀完

//get(),每次唯讀乙個字元

ifs.

close()

;}

二進位制檔案

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

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

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

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

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

#include

class

person

void

test1()

; ofs.

write((

const

char*)

&p,sizeof

(person));

//將p指標強轉為char型別

ofs.

close()

;}

讀檔案

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

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

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

#include

class

person

void

test1()

person p;

ifs.

read((

char*)

&p,sizeof

(person));

//讀取資料時,需要準備儲存的記憶體空間,位址需要強轉為char型,以及儲存空間的大小

ifs.

close()

;}

模板

模板就是建立通用的模具,大大提高復用性

特點:模板不可以直接使用,它只是乙個框架

模板的通用並不是萬能的

函式模板

c++另一種程式設計思想成為泛型程式設計,主要利用的技術就是模板

c++提供兩種模板機制函式模板和類模板

作用:建立乙個通用函式,其函式返回值型別和形參型別可以不具體制定,用乙個虛擬的型別來代表

語法:template(typename t)

函式宣告或定義

解釋:template 宣告建立模板

typename 表明其後面的符號是一種資料型別,可以用class代替

t 通用的資料型別,名稱可以替換,通常為大寫字母

template

<

typename t>

//宣告乙個模板,t是乙個通用的資料型別

void

swap

(t &a,t &b)

//第一種 自動型別推導

swap

(a,b)

;//編譯器在實參傳入形參的過程中,形參自動推導出t的資料型別

//第二種 顯示指定型別

swap<

int>

(a,b)

;//表示模板中的t是int型別

函式模板的注意事項

1.自動型別推導,必然推導出一致的資料型別t才可以使用

2.模板必須要確定出t的資料型別,才可以使用

template

<

class

t>

//typename和class都可以

void

func()

func()

;//錯誤,無法自動推導出t的資料型別,模板就無法呼叫

func<

int>()

;template

<

class

t>

void

swap

(t&a,t&b)

int a =10;

char c =

'c';

swap

(a,c)

;//錯誤,資料型別不統一

模板練習

建立乙個能對不同資料型別的資料進行排序的模板

排序演算法為選擇排序

利用char陣列和int陣列測試

template

<

typename t>

void

swap

(t &a,t &b)

template

<

typename t>

void

sort

(t array,

int len)}if

(max != i)}}

void

test1()

;int num =

sizeof

(array1)

/sizeof

(int);

sort

(array1,num)

}

C 學習筆記15

1.平台互操作性和不安全的 c 功能強大,但有些時候,它的表現仍然有些 力不從心 所以我們只能摒棄它所提供的所有安全性,轉而退回到記憶體位址和指標的世界。c 通過3種方式對此提供支援。1 第一種方式是通過平台呼叫 platform invoke,p invoke 來呼叫非託管 dll所公開的api。...

引用(C 學習筆記 15)

一 引用的作用 建立引用的作用是為變數另起乙個名字,變數的引用通常被認為是變數的別名。對變數宣告乙個引用,並不另外開闢記憶體單元,變數 i 和引用 j 占用記憶體的同一位置,當 i 變化時,j 也隨之變化,反之亦然。二 引用的格式 型別 引用名 已定義的變數名 注意 1 在宣告引用時,必須立即對它進...

學習筆記15

響應式 media 不同的大小 執行不行的css 寫上 float left 預設不會屏佔百分百,寫上多少就是多少 但是無法滿足全屏鋪滿 min left 900x 的意思是 當寬度小於這個值時候 底部出現滾動條 position absolute 這麼寫 會鋪滿螢幕 只有加上 left right...