outbuf2.hpp

来自「stl自带源码」· HPP 代码 · 共 53 行

HPP
53
字号
/* The following code example is taken from the book * "The C++ Standard Library - A Tutorial and Reference" * by Nicolai M. Josuttis, Addison-Wesley, 1999 * * (C) Copyright Nicolai M. Josuttis 1999. * Permission to copy, use, modify, sell and distribute this software * is granted provided this copyright notice appears in all copies. * This software is provided "as is" without express or implied * warranty, and with no claim as to its suitability for any purpose. */#include <iostream>#include <streambuf>#include <cstdio>extern "C" {    int write (int fd, const char* buf, int num);}class fdoutbuf : public std::streambuf {  protected:    int fd;    // file descriptor  public:    // constructor    fdoutbuf (int _fd) : fd(_fd) {    }  protected:    // write one character    virtual int_type overflow (int_type c) {        if (c != EOF) {            char z = c;            if (write (fd, &z, 1) != 1) {                return EOF;            }        }        return c;    }    // write multiple characters    virtual    std::streamsize xsputn (const char* s,                            std::streamsize num) {        return write(fd,s,num);    }};class fdostream : public std::ostream {  protected:    fdoutbuf buf;  public:    fdostream (int fd) : std::ostream(0), buf(fd) {        rdbuf(&buf);    }};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?