日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C++输入输出类的层次

發(fā)布時(shí)間:2025/4/5 c/c++ 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++输入输出类的层次 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在 C++ 中,輸入輸出數(shù)據(jù)的傳送過(guò)程稱(chēng)為流。一個(gè)流就是一個(gè)字節(jié)序列,對(duì)流可以進(jìn)行讀或?qū)懖僮鳌?/p>

輸入輸出類(lèi)層次可以分為輸入輸出流類(lèi)層次和緩沖類(lèi)層次,我們先來(lái)看一下 C++ 的輸入輸出流類(lèi)層次,見(jiàn)下圖。


在 C++ 中,輸入輸出流層次是從 ios_basic 類(lèi)開(kāi)始的,該類(lèi)作為所有類(lèi)的基類(lèi),之后它派生出了 basic_ios 類(lèi),這兩個(gè)類(lèi)是整個(gè)輸入輸出流類(lèi)層次的基類(lèi),但是它們?cè)诠δ苌嫌行﹨^(qū)別:ios_basic 和 basic_ios 都在一定程度上描述了流的基本性質(zhì),但是 ios_basic 并沒(méi)有考慮流的字符集,而 basic_ios 在描述流的基本性質(zhì)時(shí)考慮了此點(diǎn)。

basic_ios 類(lèi)派生出了 basic_istream 和 basic_ostream 類(lèi),其中 basic_istream 類(lèi)用于描述輸入流,而 basic_ostream 用于描述輸出流。 basic_istream 和 basic_ostream 類(lèi)分別繼承了 ios_base 和 basic_ios 類(lèi)中的成員函數(shù),并且增添了自己的成員函數(shù),例如分別對(duì)左移操作符和右移操作符的重載函數(shù)。

basic_iostream 類(lèi)同時(shí)繼承了 basic_istream 類(lèi)和 basic_ostream 類(lèi),該類(lèi)并沒(méi)有新增成員變量,在成員函數(shù)方面,它也只是增添了構(gòu)造函數(shù)和析構(gòu)函數(shù)。而 basic_ifstream 和 basic_ofstream 類(lèi)分別繼承自 basic_istream 類(lèi)和 basic_ostream 類(lèi),basic_ifstream 和 basic_ofstream 類(lèi)主要是對(duì)文件進(jìn)行讀寫(xiě)操作。

在 C++ 中,輸入和輸出并不是直接進(jìn)行讀和寫(xiě)操作的,通常讀和寫(xiě)操作是通過(guò)一個(gè)緩沖區(qū)來(lái)進(jìn)行的。當(dāng)計(jì)算機(jī)收到寫(xiě)字符的請(qǐng)求時(shí),計(jì)算機(jī)并不會(huì)將等待寫(xiě)入的字符直接寫(xiě)入到輸出流中,而是將其先寫(xiě)到緩沖區(qū)中,然后定期地將緩沖區(qū)中的字符寫(xiě)入到輸出流中,此過(guò)程我們稱(chēng)之為清掃緩沖區(qū),通常緩沖區(qū)滿(mǎn)或者換行符會(huì)帶動(dòng)一次將緩沖區(qū)中的字符寫(xiě)到輸出流中。讀入操作也同樣會(huì)經(jīng)過(guò)緩沖區(qū),也有類(lèi)似的過(guò)程。

在緩沖類(lèi)層次中,所有緩沖類(lèi)都從公共基類(lèi) basic_streambuf 類(lèi)派生而來(lái),見(jiàn)下圖。字符流緩沖類(lèi) basic_stringbuf 和文件緩沖類(lèi) basic_filebuf,這兩個(gè)類(lèi)為輸入輸出類(lèi)提供輸入輸出服務(wù),它們從 basic_streambuf 類(lèi)中繼承了對(duì)緩沖區(qū)讀寫(xiě)操作的函數(shù)。

在程序中聲明頭文件,就相當(dāng)于在程序中聲明了相關(guān)的類(lèi),可以說(shuō)頭文件是程序與類(lèi)庫(kù)的接口,在大致了解了輸入輸出類(lèi)層次之后,我們來(lái)看一下頭文件的用途

頭文件用途
iosfwd包含一些基本的類(lèi)聲明
iostream聲明了 cin、cout 等對(duì)象
ios聲明了 ios_base 類(lèi)和 basic_ios 類(lèi)
streambuf聲明了 basic_streambuf 類(lèi)
istream聲明了 basic_istream 類(lèi)和 basic_iostream 類(lèi)
ostream聲明了 basic_ostream 類(lèi)
iomanip聲明了用于格式化處理的操縱符
sstream聲明了 basic_stringbuf 類(lèi)和 stringstream 類(lèi)
fstream聲明了 basic_filebuf 類(lèi)和 fstream 類(lèi)

在這些頭文件中我們常用頭文件有:iostream、fstream、strstream、iomanip。Iostream 頭文件中包含了對(duì)輸入輸出流進(jìn)行操作所需要的基本信息,fstream 則用于對(duì)文件的讀寫(xiě)操作,strstream 頭文件可以用于輸入輸出字符串,而 iomanip 則主要是用于格式化輸入輸出。

總結(jié)

以上是生活随笔為你收集整理的C++输入输出类的层次的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。