C++標準庫-15-Stream Buffer類

C++標準庫-15-Stream Buffer類

Reading and writing are not done by the streams directly but are delegated to stream buffers.

  • 通過stream.rdbuf()可以返回一個指向stream buffer的指針;

  • stream的構造函數和rdbuf(streambuf*)成員函數都可以接收一個指向stream buffer的指針,通過該指針可以設置該stream的buffer。

Stream Buffer的接口

寫字符成員函數

  • sputc(c):

  • sputn(s,n):

讀字符的成員函數

  • in_avail()

  • sgetc()

  • sbumpc()

  • snextc()

  • sgetn(b,n)

  • sputbackc(c)

  • sungetc()

其他成員函數

  • pubimbue(loc):給stream buffer設置locale對象loc,並返回之前的locale對象;

  • getloc():返回當前的locale對象;

  • pubseekpos(pos):移動當前位置至pos;

  • pubseekpos(pos,which)

  • pubseekoff(offset,rpos):移動當前位置到相對位置;

  • pubseekoff(offset,rpos,which)

  • pubsetbuf(buf,n);

offset是相對位置,rpos可以取值爲ios_base::cur、ios_base::beg或者ios_base::end。

Stream Buffer Iterator

Stream Buffer的迭代器有istreambuf_iterator和ostreambuf_iterator兩種,定義在iterator頭文件中。定義一個指向cout的buffer的迭代器代碼如下:

 #include <iterator>
 using namespace std;
 
 // 方法-1
 std::ostreambuf_iterator<char> bufWriter(cout);
 
 // 方法-2 下面的代碼也可以;
 //std::ostreambuf_iterator<char> bufWriter(cout.rdbuf());
  • istreambuf_iterator的默認構造函數創建的是一個end-of-stream iterator。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章