這是解決streambuf下載,在C++ 中引入了流的概念,我們很方便的通過(guò)流來(lái)讀寫(xiě)文本數(shù)據(jù)和二進(jìn)制數(shù)據(jù),那么流對(duì)象的數(shù)據(jù)究竟是怎么存儲(chǔ)的呢,為了搞清這個(gè)問(wèn)題,先來(lái)看一看c++ 的 io 體系。
解決streambuf當(dāng)我們用文件或者字符串初始化流的時(shí)候,流內(nèi)部會(huì)保存該文件和字符串的信息,而在內(nèi)部實(shí)例化一個(gè)streambuf用來(lái)緩沖數(shù)據(jù),些數(shù)據(jù)時(shí),當(dāng)緩沖區(qū)滿的時(shí)候再將數(shù)據(jù)寫(xiě)到文件或者字符串,讀數(shù)據(jù)時(shí)當(dāng)緩沖區(qū)沒(méi)有數(shù)據(jù)時(shí)從文件或字符串讀數(shù)據(jù)到緩沖區(qū)。
在文件流這種情況下,streambuf 是為了避免大量的IO 操作
在字符串流的情況下,streambuf (其實(shí)是套在上面的流對(duì)象)是為了提供字符串的格式化讀取和輸出操作(想象字符串是你從鍵盤(pán)輸入的數(shù)據(jù))。
1. 設(shè)立全局變量,緩沖數(shù)據(jù),A,B都可以訪問(wèn)(在這種情況下,A 生產(chǎn)的時(shí)候要考慮緩沖區(qū)是否夠用,B讀取的時(shí)候要判斷當(dāng)前是否有有效數(shù)據(jù)可讀,而且很難設(shè)計(jì)一個(gè)合理分配內(nèi)存的緩沖區(qū)(想象A生產(chǎn)的數(shù)據(jù)有時(shí)很大,有時(shí)很。
2.網(wǎng)絡(luò)通信(TCP,UDP)
3. streambuf 登場(chǎng),有了streambuf配合stream, A就像正常操作流一樣往流對(duì)象里塞數(shù)據(jù),而B(niǎo) 就像正常操作流一樣從流里面讀數(shù)據(jù),不用關(guān)心其他問(wèn)題,只要這兩個(gè)流的sterambuf 是同一個(gè)對(duì)象。
解決streambuf如果目錄正確的話可以進(jìn)目錄找下streambuf文件,有些VC安裝好后,文件名可能是錯(cuò)的,例如streambuf寫(xiě)成了STREAMBF,改成STREAMBUF就可以了。
同樣的,改完這個(gè)問(wèn)題之后也有可能會(huì)碰到類似的問(wèn)題,按同樣的方法一般可以解決。
如果目錄下找不到文件的話可以到網(wǎng)上下載streambuf.h這個(gè)頭文件。