- 相關(guān)推薦
C++輸入和輸出的概念
程序的輸入指的是從輸入文件將數(shù)據(jù)傳送給程序,程序的輸出指的是從程序?qū)?shù)據(jù)傳送給輸出文件。下面是小編為大家整理的C++輸入和輸出的概念,歡迎參考~
我們經(jīng)常用到的輸入和輸出,都是以終端為對(duì)象的,即從鍵盤輸入數(shù)據(jù),運(yùn)行結(jié)果輸出到顯示器屏幕上。從操作系統(tǒng)的角度看,每一個(gè)與主機(jī)相連的輸入輸出設(shè)備都被看作一個(gè)文件。除了以終端為對(duì)象進(jìn)行輸入和輸出外,還經(jīng)常用磁盤(光盤)作為輸入輸出對(duì)象,磁盤文件既可以作為輸入文件,也可以作為輸出文件。
程序的輸入指的是從輸入文件將數(shù)據(jù)傳送給程序,程序的輸出指的是從程序?qū)?shù)據(jù)傳送給輸出文件。
C++輸入輸出包含以下三個(gè)方面的內(nèi)容:
對(duì)系統(tǒng)指定的標(biāo)準(zhǔn)設(shè)備的輸入和輸出。即從鍵盤輸入數(shù)據(jù),輸出到顯示器屏幕。這種輸入輸出稱為標(biāo)準(zhǔn)的輸入輸出,簡(jiǎn)稱標(biāo)準(zhǔn)I/O。
以外存磁盤文件為對(duì)象進(jìn)行輸入和輸出,即從磁盤文件輸入數(shù)據(jù),數(shù)據(jù)輸出到磁盤文件。以外存文件為對(duì)象的輸入輸出稱為文件的=輸入輸出,簡(jiǎn)稱文件I/O。
對(duì)內(nèi)存中指定的空間進(jìn)行輸入和輸出。通常指定一個(gè)字符數(shù)組作為存儲(chǔ)空間(實(shí)際上可以利用該空間存儲(chǔ)任何信息)。這種輸入和輸出稱為字符串輸入輸出,簡(jiǎn)稱串I/O。
C++采取不同的方法來(lái)實(shí)現(xiàn)以上種輸入輸出。為了實(shí)現(xiàn)數(shù)據(jù)的有效流動(dòng),C++系統(tǒng)提供了龐大的I/O類庫(kù),調(diào)用不同的類去實(shí)現(xiàn)不同的功能。
在C語(yǔ)言中,用printf和scanf進(jìn)行輸入輸出,往往不能保證所輸入輸出的數(shù)據(jù)是可靠的安全的。在C++的輸入輸出中,編譯系統(tǒng)對(duì)數(shù)據(jù)類型進(jìn)行嚴(yán)格的檢查,凡是類型不正確的數(shù)據(jù)都不可能通過(guò)編譯。因此C++的I/O操作是類型安全(type safe)的。C++的I/O操作是可擴(kuò)展的,不僅可以用來(lái)輸入輸出標(biāo)準(zhǔn)類型的數(shù)據(jù),也可以用于用戶自定義類型的數(shù)據(jù)。C++對(duì)標(biāo)準(zhǔn)類型的數(shù)據(jù)和對(duì)用戶聲明類型數(shù)據(jù)的輸入輸出,采用同樣的方法處理。C++通過(guò)I/O類庫(kù)來(lái)實(shí)現(xiàn)豐富的I/O功能。C++的輸入輸出優(yōu)于C語(yǔ)言中的printf和scanf,但是比較復(fù)雜,要掌握許多細(xì)節(jié)。
C++的I/O對(duì)C的發(fā)展--類型安全和可擴(kuò)展性
在C語(yǔ)言中,用primf和scanf進(jìn)行輸人輸出,往往不能保證所輸入輸出的數(shù)據(jù)是可靠的、安全的。學(xué)過(guò)C語(yǔ)言的讀者可以分析下面的用法,想用格式符%d輸出一個(gè)整數(shù), 但不小心用它輸出了單精度變量和字符串,會(huì)出現(xiàn)什么情況?假定所用的系統(tǒng)int型占兩個(gè)字節(jié)。
printf("%d", i); // i為整型變量,正確,輸出i的值
printf("%d", f); // f為單精度變量,輸出f變量中前兩個(gè)字節(jié)的內(nèi)容
printf("%d", "C++"); //輸出宇符串"C++"的地址
編譯系統(tǒng)認(rèn)為以上語(yǔ)句都是合法的,而不對(duì)數(shù)據(jù)類型的合法性進(jìn)行檢查,顯然所得到的結(jié)果不是人們所期望的,在用scanf 輸入時(shí),有時(shí)出現(xiàn)的問(wèn)題是很隱蔽的。如:
scanf("%d", &i); //正確,輸入一個(gè)整數(shù),賦給整型變量i
scanf("%d", i); //漏寫&
假如已有聲明語(yǔ)句“int i = 1; ”,定義i為整型變量,其初值為1。編譯系統(tǒng)不認(rèn)為上面的scanf語(yǔ)句出錯(cuò),而是將輸人的值存放到地址為000001的內(nèi)存單元中,這個(gè)錯(cuò)誤可能產(chǎn)生嚴(yán)重的后果。
C++為了與C兼容,保留了用printf和scanf進(jìn)行輸出和輸人的方法,以便使過(guò)去所編寫的大量的C程序仍然可以在C ++的環(huán)境下運(yùn)行,但是希望讀者在編寫新的C ++程 序時(shí)不要用C的輸入輸出機(jī)制,而要用C++自己特有的輸人輸出方法。在C++的輸入輸出中,編譯系統(tǒng)對(duì)數(shù)據(jù)類型進(jìn)行嚴(yán)格的檢查,凡是類型不正確的數(shù)據(jù)都不可能通過(guò)編譯。因此C++的I/O操作是類型安全(type safe)的。
此外,用printf和scanf可以輸出和輸入標(biāo)準(zhǔn)類型的數(shù)據(jù)(如int、float、double、char), 但無(wú)法輸出用戶自己聲明的類型(如數(shù)組、結(jié)構(gòu)體、類)的數(shù)據(jù)。在C++中,會(huì)經(jīng)常遇到對(duì)類對(duì)象的輸人輸出,顯然無(wú)法使用printf和scanf來(lái)處理。C++的I/O操作是可擴(kuò)展 的,不僅可以用來(lái)輸人輸出標(biāo)準(zhǔn)類型的數(shù)據(jù),也可以用于用戶自定義類型的數(shù)據(jù)。C++對(duì)標(biāo)準(zhǔn)類型的數(shù)據(jù)和對(duì)用戶聲明類型數(shù)據(jù)的輸人輸出,采用同樣的方法處理。顯然,在用戶聲明了一個(gè)新類后,是無(wú)法用printf和scanf 函數(shù)直接輸出和輸人這個(gè)類的對(duì)象的。
可擴(kuò)展性是C++輸人輸出的重要特點(diǎn)之一,它能提高軟件的重用性,加快軟件的開 發(fā)過(guò)程。
C++通過(guò)I/O類庫(kù)來(lái)實(shí)現(xiàn)豐富的I/O功能。這樣使C++的輸人輸出明顯地優(yōu)于C 語(yǔ)言中的printf和scanf,但是也為之付出了代價(jià),C++的I/O系統(tǒng)變得比較復(fù)雜,要掌握許多細(xì)節(jié)。在本章中只能介紹其基本的概念和基本的操作,有些具體的細(xì)節(jié)可在日后實(shí)際深入應(yīng)用時(shí)再進(jìn)一步掌握。
【C++輸入和輸出的概念】相關(guān)文章:
Java的輸入輸出08-13
C++ cin輸入流詳解10-11
搜狗輸入法如何輸出韓文09-23
Linux標(biāo)準(zhǔn)輸入及輸出錯(cuò)誤詳解09-14
C語(yǔ)言數(shù)據(jù)的輸入輸出復(fù)習(xí)08-11
C語(yǔ)言字符串的輸入輸出07-03