名前空間
変種
操作

std::strstreambuf::setbuf

提供: cppreference.com
< cpp‎ | io‎ | strstreambuf
 
 
 
 
protected:
virtual streambuf<char>* setbuf(char* s, std::streamsize n);

s がヌルポインタであり、 n がゼロの場合、この関数は効果を持ちません。

そうでなければ、効果は処理系定義です。 処理系によっては何もせず、処理系によってはバッファとして使用されていた動的メンバ配列を解放しユーザ提供の s によって最初の要素が指されているサイズ n の文字配列の使用を開始します。

この関数は protected virtual であり、 pubsetbuf() を通して、または std::strstreambuf から派生したユーザ定義クラスのメンバ関数からのみ呼ぶことができます。

目次

[編集] 引数

s - ユーザ提供バッファの最初のバイトへのポインタ
n - ユーザ提供バッファのバイト数

[編集] 戻り値

this

[編集]

動的な strstream で setbuf() がサポートされているかどうか調べるための実装テスト (出力例は Sun Studio のものです)。

#include <strstream>
#include <iostream>
 
int main()
{
    char a[100] = {};
    std::strstream str;
    str.rdbuf()->pubsetbuf(a, sizeof a);
    str << "Test string" << std::ends;
    std::cout << "user-provided buffer holds '" << a << "'\n";
}

出力例:

user-provided buffer holds 'Test string'

[編集] 関連項目

setbuf() を呼びます
(std::basic_streambufのパブリックメンバ関数) [edit]
[仮想]
可能であれば、バッファをユーザ定義の配列に置き換えます
(std::basic_streambufの仮想プロテクテッドメンバ関数) [edit]
[仮想]
制御された文字シーケンスの配列との置き換えを試みます
(std::basic_stringbufの仮想プロテクテッドメンバ関数) [edit]
[仮想]
ユーザ提供のバッファを提供し、またはこの filebuf をバッファなしにします
(std::basic_filebufの仮想プロテクテッドメンバ関数) [edit]