Namespaces
Variants

std::basic_streambuf<CharT,Traits>:: sputn, std::basic_streambuf<CharT,Traits>:: xsputn

From cppreference.net
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) Llama a xsputn ( s, count ) de la clase más derivada.
2) Escribe count caracteres en la secuencia de salida desde el array de caracteres cuyo primer elemento está apuntado por s . Los caracteres se escriben como si se hiciera mediante llamadas repetidas a sputc() . La escritura se detiene cuando se han escrito count caracteres o cuando una llamada a sputc() habría devuelto Traits :: eof ( ) .

Si el área de escritura se llena ( pptr ( ) == epptr ( ) ), no está especificado si overflow() es realmente llamado o si su efecto se logra por otros medios.

Contenidos

Parámetros

(ninguno)

Valor de retorno

El número de caracteres escritos exitosamente.

Notas

"logrado por otros medios" permite E/S en bloque sin almacenamiento intermedio: así es como std::ofstream::write() simplemente pasa el puntero a la llamada del sistema apropiada en algunas implementaciones.

Ejemplo

#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';
}

Salida:

The call to sputn() returned 14
The output sequence contains This is a test
The call to sputn() on an input stream returned 0

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 565 C++98 xsputn() siempre llamaba overflow() si pptr ( ) == epptr ( ) no necesita ser llamado realmente

Véase también

invoca xsgetn ( )
(función miembro pública)