C++ 輸入輸出流 文本文件 二進制文件讀寫


文本文件/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.

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM