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