Oracle Solaris Studio 12.4 Man Pages

Exit Print View

Updated: January 2015
 
 

stdiobuf(3CC4)

Name

stdiobuf - 与 C stdio 一起使用的缓冲区和流类

Synopsis

 
#include <stdiostream.h> // includes <iostream.h> and <stdio.h>
class stdiobuf : public streambuf {
public:
     stdiobuf(FILE*);
     FILE*     stdiofile();
};
class stdiostream : public ios {
public:
     stdiostream(FILE*);
     stdiobuf* rdbuf();
};

Description

stdiobuf 类是 streambuf 的特例,使用 C stdio FILE 作为用作字符来源或目的地的实际文件的媒介。sbufprot3CC4() 和 sbufpub3CC4() 中描述了基本的 streambuf 操作。输入、输出和查找操作都反映在对关联 FILE 的更改中。例如,针对 fseek() 实现了查找函数。

stdiostream 提供了 C stdio FILE 的 C++ 接口。它采用 stdiobuf 作为其缓冲区。它不是 iostreams 的完整实现;它只有缓冲区类和 ios 类功能。C++ I/O 是通过对 C stdio getc()putc() 函数的每字符调用执行的。没有常规的缓冲,因为那会破坏 C 和 C++ 访问的同步。

使用这些类之一的唯一理由是可以在同一文件中混合使用 C stdio 代码和 C++ iostream 式代码。对于新代码,请优先使用 filebuffstream,它们更加高效。

stdiobuf 函数

stdiobuf(fp)

构造一个附加到 fp 指向的 FILE 结构的 stdiobuf

FILE* fp = siobuf.stdiofile()

返回指向与 siobuf 关联的 FILE 结构的指针。

stdiostream 函数

stdiostream(fp)

构造一个附加到 fp 指向的 FILE 结构的 stdiostream

stdiobuf* sbp = siostr.rdbuf()

返回指向与 siostr 关联的 stdiobuf 的指针。这与 ios::rdbuf() 相同,但是返回类型比较特别,是一个 stdiobuf

See also

ios (3CC4) 、 ios.intro (3CC4) 、 sbufprot (3CC4) 、 sbufpub (3CC4) 、 stdio (3C)

《C++ Library Reference》中的第 3 章 "The Classic iostream Library"