zoukankan      html  css  js  c++  java
  • C++ streambuf用法

    class LogStreamBuf : public std::streambuf {
      public:
      // REQUIREMENTS: "len" must be >= 2 to account for the '
    ' and '
    '.
      LogStreamBuf(char *buf, int len) {
        setp(buf, buf + len - 2);
      }
      // This effectively ignores overflow.
      virtual int_type overflow(int_type ch) {
        return ch;
      }
    
      // Legacy public ostrstream method.
      size_t pcount() const { return pptr() - pbase(); }
      char* pbase() const { return std::streambuf::pbase(); }
    };
    class LogStream : public std::ostream {
       public:
          LogStream(char *buf, int len, int ctr)
              : std::ostream(NULL),
                streambuf_(buf, len),
                ctr_(ctr),
                self_(this) { rdbuf(&streambuf_);}
    
          int ctr() const { return ctr_; }
          void set_ctr(int ctr) { ctr_ = ctr; }
          LogStream* self() const { return self_; }
    
          // Legacy std::streambuf methods.
          size_t pcount() const { return streambuf_.pcount(); }
          char* pbase() const { return streambuf_.pbase(); }
          char* str() const { return pbase(); }
    
      private:
          base_logging::LogStreamBuf streambuf_;
          int ctr_;  // Counter hack (for the LOG_EVERY_X() macro)
          LogStream *self_;  // Consistency check hack
      };
  • 相关阅读:
    springboot 配置
    spring boot配置分页插件
    mongodb 操作
    java基础知识
    java设计模式
    /cat/cpuinfo信息查看
    app接口开发
    基于OpenAM系列的SSO----基础
    关于Linux下的连接文件学习总结
    YII :将oracle中timestamp 字段正常显示在页面中
  • 原文地址:https://www.cnblogs.com/457220157-FTD/p/4208849.html
Copyright © 2011-2022 走看看