研究了半天總算有了一點概念。
下面是 basic_streambuf 裡和緩衝區相關的幾個成員函式。
對於輸入緩衝區:
eback() : 指向輸入緩衝起始的位置
gptr() : 返回指向下乙個讀取元素所在的位置
egptr() : 返回指向最後乙個可讀元素(注意,這個指向的不是你建立的緩衝區的結尾)
// 對於輸出緩衝區
pbase(), 指向輸出緩衝的起始位置
pptr(), 指向下乙個可寫的位置
epptr(), 指向輸出緩衝的末尾(也就是你建立的輸出緩衝區的末尾)
其他不多說看**,這個是吧 windows 的 pipe (管道) 操作封裝在流裡面的例子 :
templateclass basic_pipebuf : public std::basic_streambuf<_elem, _traits>
~basic_pipebuf()bool open( handle handle )
void close()}bool is_open()
public:
static const int pipe_buffer_size=1024; // 緩衝區大小
protected:
void init_out_buf()
void init_in_buf()
// 把輸出緩衝區的資料寫入管道virtual int sync()
}
assert( cbread >0 );assert( (cbread % sizeof(_elem))==0 );
// 設定輸入緩衝的指標
setg( eback(), eback(), eback()+ ( cbread / sizeof(_elem) ) );
return _traits::to_int_type(*gptr()); // 返回第乙個字元
}
virtual int_type overflow( int_type c = _traits::eof() )private:
std::string _name;
handle _handle_pipe;
};
typedef basic_pipebuf< char, std::char_traits> pipebuf;typedef basic_pipebuf< wchar_t, std::char_traits> wpipebuf;
至於完整的流物件,構建應該相當簡單,回頭再放出。
構建自己的映象
參考鏈結 tensorflow tensorflow僅支援py2.7所以需要構建自己的基於py3.5的tensorflow映象 1查詢ubuntu映象,建立容器 nvidia docker search ubuntu nvidia docker run it d name myimage ubunt...
也談Vista的解除安裝現象
照理說,使用者買了一台預裝 vista 的電腦之後,應該非常高興才對。但是,事實上,並不如此。我有一位朋友,前不久購買了一台 hp v3431au 膝上型電腦,其中預裝了 vista 作業系統,開始很新奇。我也試了一把。不料,才過了乙個來星期時間,他卻把它 格了 徹底解除安裝 我大為吃驚。這 指 v...
也談mysql的limit優化
測試環境 作業系統 debian linux 伺服器版本 mysql 5.0.24 mysql資料庫的qcache快取關閉 資料庫表testtable的引數 型別 myisam 大小 80mb 記錄規模 50000 字段數 25個字段 id是主鍵 leibie欄位上建有索引 進行資料分段測試 1 s...