文本文件/ASCII文件(能直接顯示內容,費存儲空間):文件中每一個字節中均以ASCII代碼形式存放數據,即一個字節存放一個字符,這個文件就是ASCII文件或稱字符文件。
二進制文件(不能顯示內容,節省存儲空間) :將內存中的數據存儲形式不加轉換的傳送到磁盤文件,內存數據的映像文件,因為文件中的信息不是字符數據,而是字節中的二進制形式信息。
兩者操作都需要先打開文件,用完關閉文件。在打開時用ios::binary指定為以二進制形式傳送和存儲。
二進制文件除了可以作為輸入文件或者輸出文件外,還可以既能輸入又能輸出的文件,這是和ASCII文件不同的地方、
簡單來說,文本文件是基於字符編碼的文件,常見的編碼有ASCII編碼,UNICODE編碼等等。二進制文件是基於值編碼的文件,你可以根據具體應用,指定某個值是什么意思(這樣一個過程,可以看作是自定義編碼。
從上面可以看出文本文件基本上是定長編碼的(也有非定長的編碼如UTF-8)。而二進制文件可看成是變長編碼的,因為是值編碼嘛,多少個比特代表一個值,完全由你決定。大家可能對BMP文件比較熟悉,就拿它舉例子吧,其頭部是較為固定長度的文件頭信息,前2字節用來記錄文件為BMP格式,接下來的8個字節用來記錄文件長度,再接下來的4字節用來記錄bmp文件頭的長度,bmp就是一個自定義的二進制文件,只是格式固定了。一般自己定義的二進制文件需要按自定義格式來識別內容。
二.iostream類:C++用於輸入輸出的類庫。
在C++中,輸入輸出流被定義為類,C++的I/O庫中的類稱為流類,用流類定義的對象稱為流對象。
流中的內容可以是ASCII字符,二進制形式的數據,圖形圖像,數字音頻視頻或其他形式的信息。
I/O類庫中常用流類
類名 作用 在哪個頭文件中聲明
ios 抽象基類 iostream
istream 通用輸入流和其他輸入流的基類 iostream
ostream 通用輸出流和其他輸出流的基類 iostream
iostrean 通用輸入輸出流和人其他輸入輸出流的基類 iostream
ifstream 輸入文件流類 fstream
ofstream 輸出文件流類 fstream
fstream 輸入輸出文件流類 fstream
istrstream 輸入字符串流類 strstream
......................................
2 有關頭文件
iostream 包含對輸入輸出流進行操作所需的基本信息
fstream 用於用戶管理的文件的i/o操作
strstream 用於字符串流的i/o
stdiostream 用於混合使用C和C++的I/O機制時,例如想將C程序轉變為C++程序
iomanip 在使用格式化I/O時應包含此頭文件
iostream頭文件中定義的類有ios,istream,ostream,iostream等
iostream 包含了對輸入輸出的進行的基本操作所需信息,因此大多數C++程序都包括iostream
iostream 中還定義了4中流對象 cin(鍵盤),cout(屏幕),cerr(屏幕),clog(屏幕) 定義形式:ostream cout(stdout)
3 iostream頭文件中重載運算符
在istream 和ostream類中分別對>>和<<進行了重載,以便於能用它輸入輸出各種標准數據類型的數據:
ostream operator <<(int); //用於向輸出流插入一個int數據
ostream operator <<(flaot); //用於向輸出流插入一個float數據
ostream operator <<(char); //用於向輸出流插入一個char數據
ostream operator <<(char *); //用於向輸出流插入一個字符串數據
注意 自定義類型重載>> <<,在類內聲明為友元函數重載。
4 cout.put('a');流成員函數put輸出字符
5 cin是iostream類的對象,它從標准輸入設備(鍵盤)獲取數據,程序中的變量通過流提取符>>從流中提取數據。流提取符>>從流中提取數據時通常跳過輸入流中的空格 tab鍵 換行符等空白字符。注意:只有在輸入完數據再按回車鍵后,改行數據才被送入鍵盤緩沖區,形成輸入流,提取運算法>>才能從中提取數據。
ch=cin.get();讀入一個字符
cin.get(ch);
cin.get(字符指針/數組,字符個數n,終止字符)
cin.getline(字符指針/數組,字符個數n,終止字符) 兩個區別:cin.get函數從輸入流讀字符時,遇到終止字符時停止讀取,指針不向后移動,仍然停在終止符之前的位置,在下一次讀取時從終止符開始。后者會跳過終止符。
前者得借助ignore函數跳過終止符,
6 cin.eof(),cin.peek(),cin.outback(),cin,ignore(n,終止字符)
7.