std::basic_streambuf<CharT,Traits>::sputn, std::basic_streambuf<CharT,Traits>::xsputn
Von cppreference.com
< cpp | io | basic streambuf
| std::streamsize sputn( const char_type* s, std::streamsize count ); |
(1) | |
| protected: virtual std::streamsize xsputn( const char_type* s, std::streamsize count ); |
(2) | |
1) Ruft xsputn(s, count) der am weitesten abgeleiteten Klasse auf.
2) Schreibt count Zeichen aus dem Zeichen-Array, dessen erstes Element von s gezeigt wird, in die Ausgabesequenz. Die Zeichen werden geschrieben, als ob durch wiederholte Aufrufe von sputc(). Das Schreiben stoppt, wenn entweder count Zeichen geschrieben wurden oder ein Aufruf von sputc() Traits::eof() zurückgeben würde.
Wenn der Ausgabebereich voll ist (pptr() = epptr()), ist es nicht spezifiziert, ob overflow() tatsächlich aufgerufen wird oder dessen Wirkung auf andere Weise erzielt wird.
Inhalt |
[bearbeiten] Parameter
(keine)
[bearbeiten] Rückgabewert
Die Anzahl der erfolgreich geschriebenen Zeichen.
[bearbeiten] Hinweise
"auf andere Weise erzielt" erlaubt Massen-I/O ohne Zwischenpufferung: das ist, wie std::ofstream::write() in manchen Implementierungen einfach den Zeiger an den geeigneten Systemaufruf weitergibt.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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'; }
Ausgabe
The call to sputn() returned 14 The output sequence contains This is a test The call to sputn() on an input stream returned 0
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 565 | C++98 | xsputn() rief immer overflow() auf, wenn pptr() = epptr() |
es muss nicht tatsächlich aufgerufen werden |
[bearbeiten] Siehe auch
| ruft xsgetn() auf (public member function) |