程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++基礎知識 >> C++輸入和輸出的概念

C++輸入和輸出的概念

編輯:C++基礎知識
我們經常用到的輸入和輸出,都是以終端為對象的,即從鍵盤輸入數據,運行結果輸出到顯示器屏幕上。從操作系統的角度看,每一個與主機相連的輸入輸出設備都被看作一個文件。除了以終端為對象進行輸入和輸出外,還經常用磁盤(光盤)作為輸入輸出對象,磁盤文件既可以作為輸入文件,也可以作為輸出文件。

程序的輸入指的是從輸入文件將數據傳送給程序,程序的輸出指的是從程序將數據傳送給輸出文件。

C++輸入輸出包含以下三個方面的內容:
  1. 對系統指定的標准設備的輸入和輸出。即從鍵盤輸入數據,輸出到顯示器屏幕。這種輸入輸出稱為標准的輸入輸出,簡稱標准I/O。
  2. 以外存磁盤文件為對象進行輸入和輸出,即從磁盤文件輸入數據,數據輸出到磁盤文件。以外存文件為對象的輸入輸出稱為文件的輸入輸出,簡稱文件I/O。
  3. 對內存中指定的空間進行輸入和輸出。通常指定一個字符數組作為存儲空間(實際上可以利用該空間存儲任何信息)。這種輸入和輸出稱為字符串輸入輸出,簡稱串I/O。

C++采取不同的方法來實現以上種輸入輸出。為了實現數據的有效流動,C++系統提供了龐大的I/O類庫,調用不同的類去實現不同的功能。

在C語言中,用printf和scanf進行輸入輸出,往往不能保證所輸入輸出的數據是可靠的安全的。在C++的輸入輸出中,編譯系統對數據類型進行嚴格的檢查,凡是類型不正確的數據都不可能通過編譯。因此C++的I/O操作是類型安全(type safe)的。C++的I/O操作是可擴展的,不僅可以用來輸入輸出標准類型的數據,也可以用於用戶自定義類型的數據。C++對標准類型的數據和對用戶聲明類型數據的輸入輸出,采用同樣的方法處理。C++通過I/O類庫來實現豐富的I/O功能。C++的輸入輸出優於C語言中的printf和scanf,但是比較復雜,要掌握許多細節。

C++的I/O對C的發展--類型安全和可擴展性

在C語言中,用primf和scanf進行輸人輸出,往往不能保證所輸入輸出的數據是可靠的、安全的。學過C語言的讀者可以分析下面的用法,想用格式符%d輸出一個整數, 但不小心用它輸出了單精度變量和字符串,會出現什麼情況?假定所用的系統int型占兩個字節。
    printf("%d", i);  // i為整型變量,正確,輸出i的值
    printf("%d", f);  // f為單精度變量,輸出f變量中前兩個字節的內容
    printf("%d", "C++");  //輸出宇符串"C++"的地址

編譯系統認為以上語句都是合法的,而不對數據類型的合法性進行檢查,顯然所得到的結果不是人們所期望的,在用scanf 輸入時,有時出現的問題是很隱蔽的。如:
    scanf("%d", &i);  //正確,輸入一個整數,賦給整型變量i
    scanf("%d", i);  //漏寫&

假如已有聲明語句“int i = 1; ”,定義i為整型變量,其初值為1。編譯系統不認為上面的scanf語句出錯,而是將輸人的值存放到地址為000001的內存單元中,這個錯誤可能產生嚴重的後果。

C++為了與C兼容,保留了用printf和scanf進行輸出和輸人的方法,以便使過去所編寫的大量的C程序仍然可以在C ++的環境下運行,但是希望讀者在編寫新的C ++程 序時不要用C的輸入輸出機制,而要用C++自己特有的輸人輸出方法。在C++的輸入輸出中,編譯系統對數據類型進行嚴格的檢查,凡是類型不正確的數據都不可能通過編譯。因此C++的I/O操作是類型安全(type safe)的。

此外,用printf和scanf可以輸出和輸入標准類型的數據(如int、float、double、char), 但無法輸出用戶自己聲明的類型(如數組、結構體、類)的數據。在C++中,會經常遇到對類對象的輸人輸出,顯然無法使用printf和scanf來處理。C++的I/O操作是可擴展 的,不僅可以用來輸人輸出標准類型的數據,也可以用於用戶自定義類型的數據。C++對標准類型的數據和對用戶聲明類型數據的輸人輸出,采用同樣的方法處理。顯然,在用戶聲明了一個新類後,是無法用printf和scanf 函數直接輸出和輸人這個類的對象的。

可擴展性是C++輸人輸出的重要特點之一,它能提高軟件的重用性,加快軟件的開 發過程。

C++通過I/O類庫來實現豐富的I/O功能。這樣使C++的輸人輸出明顯地優於C 語言中的printf和scanf,但是也為之付出了代價,C++的I/O系統變得比較復雜,要掌握許多細節。在本章中只能介紹其基本的概念和基本的操作,有些具體的細節可在日後實際深入應用時再進一步掌握。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved