I/O manipulators | ||||
Print functions(C++23) | ||||
C-style I/O | ||||
Buffers | ||||
(C++23) | ||||
(C++98/26*) | ||||
(C++20) | ||||
Streams | ||||
Abstractions | ||||
File I/O | ||||
String I/O | ||||
Array I/O | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++98/26*) | ||||
(C++98/26*) | ||||
(C++98/26*) | ||||
Synchronized Output | ||||
(C++20) | ||||
Types | ||||
Error category interface | ||||
(C++11) | ||||
(C++11) |
Public member functions | ||||
(C++11) | ||||
(C++11) | ||||
(C++20) | ||||
Protected member functions | ||||
basic_stringbuf::setbuf | ||||
Non-member functions | ||||
(C++11) | ||||
Exposition-only member functions | ||||
protected: virtualstd::basic_streambuf<CharT, Traits>* setbuf( char_type* s,std::streamsize n) | ||
Ifs is a null pointer andn is zero, this function has no effect.
Otherwise, the effect is implementation-defined: some implementations do nothing, while some implementations clear thestd::string member currently used as the buffer and begin using the user-supplied character array of sizen, whose first element is pointed to bys, as the buffer and the input/output character sequence.
This function is protected virtual, it may only be called throughpubsetbuf()
or from member functions of a user-defined class derived fromstd::basic_stringbuf
.
Contents |
s | - | pointer to the first CharT in the user-provided buffer or null |
n | - | the number of CharT elements in the user-provided buffer or zero |
this
The deprecated stream bufferstd::strstreambuf or the boost.IOStreams deviceboost::basic_array
may be used to implement I/O buffering over a user-provided char array in portable manner.
Test for the stringstream's setbuf functionality.
#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';}
Output:
3.14 (on GNU g++/libstdc++ and SunPro C++/roguewave)<nothing> (on MS Visual Studio 2010, SunPro C++/stlport4, CLang++/libc++)
invokessetbuf() (public member function of std::basic_streambuf<CharT,Traits> )[edit] |