std::streamsize sputn( const char_type* s, std::streamsize count ); | (1) | |
protected: virtual std::streamsize xsputn( const char_type* s, std::streamsize count ); | (2) |
xsputn(s, count)
of the most derived class.count
characters to the output sequence from the character array whose first element is pointed to by s
. The characters are written as if by repeated calls to sputc()
. Writing stops when either count
characters are written or a call to sputc()
would have returned Traits::eof()
.If the put area becomes full (pptr() == epptr()
), this function may call overflow()
, or achieve the effect of calling overflow()
by some other, unspecified, means.
(none).
The number of characters successfully written.
"achieving effects of overflow()
by unspecified means" permits bulk I/O without intermediate buffering: that's how std::ofstream::write
simply passes the pointer to the POSIX write()
system call in some implementations of iostreams.
#include <iostream> #include <sstream> int main() { std::ostringstream s1; std::streamsize sz = s1.rdbuf()->sputn("This is a test", 14); s1 << '\n'; std::cout << "The call to sputn() returned " << sz << '\n' << "The output sequence contains " << s1.str(); std::istringstream s2; sz = s2.rdbuf()->sputn("This is a test", 14); std::cout << "The call to sputn() on an input stream returned " << sz << '\n'; }
Output:
The call to sputn() returned 14 The output sequence contains This is a test The call to sputn() on an input stream returned 0
invokes xsgetn() (public member function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/io/basic_streambuf/sputn