Namensräume
Varianten
Aktionen

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

#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) [bearbeiten]