这是解决streambuf下载,在C++ 中引入了流的概念(niàn),我们很方便的通过(guò)流来(lái)读写文本数据和二进制(zhì)数据,那(nà)么(me)流对象的数据究竟是怎么存储的(de)呢(ne),为(wéi)了搞清这个问题(tí),先来看一(yī)看c++ 的(de) io 体系。
解(jiě)决streambuf当我们用文(wén)件或者字符串初(chū)始化流的时(shí)候,流内部会保存该文件和字符串的信(xìn)息,而在内(nèi)部实例化一个streambuf用来缓(huǎn)冲数据(jù),些数据时,当缓冲区满(mǎn)的时(shí)候再将数据写到文件或者(zhě)字符串,读(dú)数据时当缓冲区没有数(shù)据时(shí)从文件或字符串读数据到(dào)缓冲区。
在文(wén)件流(liú)这种情况下,streambuf 是为了避免大量的IO 操作
在字符串流的(de)情况下,streambuf (其实(shí)是套在上面的流对象)是为了提(tí)供字符串的格(gé)式(shì)化读取和输出(chū)操作(想象字符(fú)串是(shì)你从键盘输(shū)入的数据)。
1. 设立全局变量,缓冲数(shù)据,A,B都可以访问(在这种情况下,A 生(shēng)产的时候(hòu)要考(kǎo)虑缓(huǎn)冲区是否够用(yòng),B读取(qǔ)的时候要判断当前是(shì)否有(yǒu)有效数据可(kě)读,而且很难设计一个合理分配内存的缓冲区(想象A生产的数据有时很大(dà),有时很小))
2.网络通信(TCP,UDP)
3. streambuf 登场,有了streambuf配合stream, A就(jiù)像正常操作流一样往流对象里塞数(shù)据(jù),而B 就(jiù)像正常操作流一样从流里面读数据,不用关心其他问题,只(zhī)要这(zhè)两个流的sterambuf 是同一个对象(xiàng)。
解决streambuf如(rú)果目录正确的(de)话可以进目(mù)录找下streambuf文件(jiàn),有些VC安装好后,文(wén)件名(míng)可能(néng)是错(cuò)的,例如streambuf写成了STREAMBF,改成STREAMBUF就可以(yǐ)了(le)。
同样的,改完这(zhè)个问题之(zhī)后也有(yǒu)可能会(huì)碰到类似(sì)的问题,按同样的方法一(yī)般可以解决。
如果目录下找(zhǎo)不到文件的(de)话可以到网上下载(zǎi)streambuf.h这个头文件。
