名稱空間
變體
操作

std::basic_stringbuf<CharT,Traits,Allocator>::setbuf

來自 cppreference.com
< cpp‎ | io‎ | basic stringbuf
 
 
 
 
protected:
virtual std::basic_streambuf<CharT, Traits>* setbuf( char_type* s, std::streamsize n )

如果 s 是空指標且 n 為零,此函式無效。

否則,效果是實現定義的:某些實現不執行任何操作,而某些實現會清除當前用作緩衝區的 std::string 成員,並開始使用使用者提供的,大小為 n 且第一個元素由 s 指向的字元陣列作為緩衝區和輸入/輸出字元序列。

此函式是受保護的虛擬函式,只能透過 `pubsetbuf()` 或從使用者定義類(派生自 `std::basic_stringbuf`)的成員函式呼叫。

目錄

[編輯] 引數

s - 指向使用者提供緩衝區中第一個 CharT 的指標,或為空
n - 使用者提供緩衝區中的 CharT 元素數量,或為零

[編輯] 返回值

this

[編輯] 注意

已棄用的流緩衝區 std::strstreambuf 或 boost.IOStreams 裝置 boost::basic_array 可用於以可移植的方式實現在使用者提供的字元陣列上的 I/O 緩衝。

[編輯] 示例

測試 stringstream 的 setbuf 功能。

#include <iostream>
#include <sstream>
 
int main()
{
    std::ostringstream ss;
    char c[1024] = {};
    ss.rdbuf()->pubsetbuf(c, 1024);
    ss << 3.14 << '\n';
    std::cout << c << '\n';
}

輸出

3.14 (on GNU g++/libstdc++ and SunPro C++/roguewave)
<nothing> (on MS Visual Studio 2010, SunPro C++/stlport4, CLang++/libc++)

[編輯] 參閱

呼叫 setbuf()
(std::basic_streambuf<CharT,Traits> 的公共成員函式) [編輯]