天天看點

《C++程式設計教程(第3版)》——第3章,第1節傳統的輸入輸出函數實作方法

本節書摘來自華章出版社《c++程式設計教程(第3版)》一書中的第3章,第3.1節傳統的輸入輸出函數實作方法,作者張志航,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視

第3章 簡單的輸入輸出

通過前面的章節我們了解了組成一個程式的基本資料元素,下面我們就可以在資料元素的基礎上開始學習編寫簡單的c++程式了。本章主要介紹計算機程式設計的基礎:在c++程式中實作資料輸入輸出的基本方法。由于c++中資料輸入輸出的實作機制與後續章節中的面向對象重載等技術有着密切的聯系,是以在沒有系統地學習面向對象設計思想之前無法對此進行詳細的介紹。是以,本章隻對c++中資料輸入輸出的使用方法做簡單的介紹。有關c++編譯器提供的完整的輸入輸出流體系結構的實作原理,将在第14章中進行詳細的介紹。

3.1 傳統的輸入輸出函數實作方法

由于計算機是一種資訊處理機器,它的主要工作就是處理各種資訊和資料。而這些資訊不可能都是由計算機自己生成的,是以幾乎每個實際應用的程式都需要有将使用者的資訊輸送給計算機的功能。同時,計算機的最終運算結果也不可能隻是供計算機自己使用,它必須以某種方式顯示出來(顯示在螢幕上或者列印到紙上),以供使用者檢視。是以,在所有實際應用的程式中,最基本的功能就是輸入和輸出功能。一個實際應用的程式應該具有接收使用者輸入資料的能力(包含零個或者多個輸入),運算的結果必須要以某種方式顯示給使用者看(至少包含一個或者包含多個輸出)。一般來說,不包含輸入輸出功能的程式是一個沒有實際使用價值的程式。

程式在執行期間,接收外部資訊的操作稱為程式的輸入(input),而把程式的資料向外部發送的操作稱為程式的輸出(output)。由于輸入和輸出功能往往是成對出現的,我們經常會用英文縮寫組合“i/o”來表示它們。

由于c++是在c語言的基礎上發展擴充而來的,為了保證程式的相容性,它也支援c語言中輸入輸出的實作方法。在c語言中沒有定義輸入輸出語句,輸入輸出功能是通過輸入輸出系統庫中的scanf()和printf()等函數來實作的,其中scanf()函數負責輸入操作,printf()函數負責輸出操作。我們稱使用c語言庫函數實作程式輸入輸出功能的方法為傳統的輸入輸出實作方法。

在c語言中使用系統庫函數,一般要包含相應的函數庫檔案。函數庫檔案總是被引用在程式檔案的最前方,是以又被稱為頭檔案(header file),用檔案擴充名.h來表示。c語言的輸入輸出系統庫函數一般放在stdio.h(standard input/output header file)檔案中,使用大多數輸入輸出系統庫函數時都要包含這個頭檔案,但是對于scanf()和printf()函數例外。這兩個函數可以在不包含任何頭檔案的情況下使用。但是,c++編譯器對程式的文法檢查要遠遠比c語言編譯器嚴格,在c++編譯器中編譯包含scanf()和printf()函數而又沒有包含對應的頭檔案的程式時,往往編譯器會報告錯誤,這一點學習過c語言程式設計的程式員必須特别注意。在c++編譯器中使用任何一個系統庫函數,都需要包含相應的頭檔案。程式例3.1中舉例說明了傳統的輸入輸出函數在應用程式中的基本使用方法。

例3.1 示範傳統的輸入輸出函數的使用方法。

`include

int main()

{

}`

由于scanf()和printf()函數的使用方法比較複雜,是以,在c++中利用先進的重載(over-loading)等面向對象技術,重新設計了一套相對便于使用的輸入輸出方法,稱為輸入輸出流技術。限于篇幅,本書不再介紹scanf()和printf()函數的用法,對此感興趣的讀者可參考c語言的相關書籍,本章重點介紹c++中特有的輸入輸出流技術。

使用c++程式設計時,建議盡量使用c++提供的輸入輸出流技術來實作輸入輸出操作。若在一個程式中同時使用c++的輸入輸出流技術和c語言的輸入輸出函數方法來完成輸入輸出操作,有時會出現一些異常現象,如輸入輸出語句的執行順序不對等。當學習visual c++進階程式設計時,讀者也會知道如果不使用輸入輸出流等c++特有的技術,将無法在程式編寫過程中利用visual c++提供的很多有用的跟蹤調試等輔助工具。

同時,由于輸入輸出流的書寫格式簡潔,閱讀友善,符合現代軟體設計中的可讀性要求,是以再次建議讀者在書寫c++程式的時候徹底放棄c語言的輸入輸出函數。

繼續閱讀