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) Appelle xsputn ( s, count ) de la classe la plus dérivée.
2) Écrit count caractères dans la séquence de sortie à partir du tableau de caractères dont le premier élément est pointé par s . Les caractères sont écrits comme par des appels répétés à sputc() . L'écriture s'arrête soit lorsque count caractères ont été écrits, soit lorsqu'un appel à sputc() aurait retourné Traits :: eof ( ) .

Si la zone de sortie devient pleine ( pptr ( ) == epptr ( ) ), il n'est pas spécifié si overflow() est effectivement appelée ou si son effet est obtenu par d'autres moyens.

Table des matières

Paramètres

(aucun)

Valeur de retour

Le nombre de caractères écrits avec succès.

Notes

"réalisé par d'autres moyens" permet des E/S en bloc sans tamponnement intermédiaire : c'est ainsi que std::ofstream::write() passe simplement le pointeur à l'appel système approprié dans certaines implémentations.

Exemple

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

Sortie :

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

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 565 C++98 xsputn() appelait toujours overflow() si pptr ( ) == epptr ( ) il n'est pas nécessaire de l'appeler effectivement

Voir aussi

appelle xsgetn ( )
(fonction membre publique)