std::basic_ostream<CharT,Traits>:: operator<<
|
basic_ostream
&
operator
<<
(
bool
value
)
;
|
(1) | |
|
basic_ostream
&
operator
<<
(
long
value
)
;
|
(2) | |
|
basic_ostream
&
operator
<<
(
unsigned
long
value
)
;
|
(3) | |
|
basic_ostream
&
operator
<<
(
long
long
value
)
;
|
(4) | (depuis C++11) |
|
basic_ostream
&
operator
<<
(
unsigned
long
long
value
)
;
|
(5) | (depuis C++11) |
|
basic_ostream
&
operator
<<
(
double
value
)
;
|
(6) | |
|
basic_ostream
&
operator
<<
(
long
double
value
)
;
|
(7) | |
|
basic_ostream
&
operator
<<
(
const
void
*
value
)
;
|
(8) | |
|
basic_ostream
&
operator
<<
(
const
volatile
void
*
value
)
;
|
(9) | (depuis C++23) |
|
basic_ostream
&
operator
<<
(
std::
nullptr_t
)
;
|
(10) | (depuis C++17) |
|
basic_ostream
&
operator
<<
(
short
value
)
;
|
(11) | |
|
basic_ostream
&
operator
<<
(
int
value
)
;
|
(12) | |
|
basic_ostream
&
operator
<<
(
unsigned
short
value
)
;
|
(13) | |
|
basic_ostream
&
operator
<<
(
unsigned
int
valeur
)
;
|
(14) | |
|
basic_ostream
&
operator
<<
(
float
valeur
)
;
|
(15) | |
|
basic_ostream
&
operator
<<
(
/* extended-floating-point-type */
value
)
;
|
(16) | (depuis C++23) |
|
basic_ostream
&
operator
<<
(
std::
basic_streambuf
<
CharT, Traits
>
*
sb
)
;
|
(17) | |
|
basic_ostream
&
operator
<<
(
std:: ios_base & ( * func ) ( std:: ios_base & ) ) ; |
(18) | |
|
basic_ostream
&
operator
<<
(
std:: basic_ios < CharT, Traits > & ( * func ) ( std:: basic_ios < CharT, Traits > & ) ) ; |
(19) | |
|
basic_ostream
&
operator
<<
(
std::
basic_ostream
<
CharT, Traits
>
&
(
*
func
)
|
(20) | |
Insère des données dans le flux.
badbit
.
- static_cast < long > ( static_cast < unsigned short > ( value ) ) , si flags ( ) & std:: ios_base :: basefield est std::ios_base::oct ou std::ios_base::hex , ou
- static_cast < long > ( value ) sinon.
- static_cast < long > ( static_cast < unsigned int > ( value ) ) , si flags ( ) & std:: ios_base :: basefield est std::ios_base::oct ou std::ios_base::hex , ou
- static_cast < long > ( value ) sinon.
- Si le rang est inférieur ou égal à celui de double , insère static_cast < double > ( value ) comme dans (6) .
- Sinon, si le rang est inférieur ou égal à celui de long double , insère static_cast < long double > ( value ) comme dans (7) .
- Sinon, un appel de cette surcharge est conditionnellement pris en charge avec une sémantique définie par l'implémentation.
-
- la fin de fichier se produit sur la séquence d'entrée ;
- l'insertion dans la séquence de sortie échoue (auquel cas le caractère à insérer n'est pas extrait) ;
- une exception se produit (auquel cas l'exception est capturée).
failbit
et, si
failbit
est défini dans
exceptions()
, relance l'exception.
Table des matières |
Paramètres
| value | - | valeur entière, à virgule flottante, booléenne ou pointeur à insérer |
| func | - | fonction à appeler |
| sb | - | pointeur vers le tampon de flux pour lire les données |
Valeur de retour
Notes
Il n'y a pas de surcharges pour les pointeurs vers les membres non statiques , les pointeurs vers volatiles, (jusqu'à C++23) ou les pointeurs de fonctions (à l'exception de ceux dont les signatures sont acceptées par les ( 18-20 ) surcharges).
-
Tenter d'afficher de tels objets invoque une conversion implicite en
bool
, et, pour toute valeur de pointeur non nulle, la valeur
1
est imprimée (sauf si
boolalphaétait activé, auquel cas true est imprimé).
Les arguments de type caractère et chaîne de caractères (par exemple, de type char ou const char * ) sont traités par les surcharges non-membres de operator << .
- Tenter d'afficher un caractère en utilisant la syntaxe d'appel de fonction membre (par exemple, std:: cout . operator << ( 'c' ) ; ) appellera l'une des surcharges dans ( 2-5 ) ou ( 11-14 ) et affichera la valeur numérique.
- Tenter d'afficher une chaîne de caractères en utilisant la syntaxe d'appel de fonction membre appellera la surcharge (8) et affichera la valeur du pointeur à la place.
La surcharge (10) a été ajoutée par la résolution de LWG issue 2221 , mais elle n'est jamais implémentée dans aucune implémentation de bibliothèque standard en modes C++11/14.
Exemple
#include <iomanip> #include <iostream> #include <sstream> int fun() { return 42; } int main() { std::istringstream input(" \"Some text.\" "); double f = 3.14; bool b = true; std::cout << fun() // surcharge int (12) << ' ' // surcharge non-membre << std::boolalpha // surcharge fonction (18) << b // surcharge bool (1) << " " // surcharge non-membre << std::fixed // surcharge fonction (18) à nouveau << f // surcharge double (6) << input.rdbuf() // surcharge streambuf << fun // surcharge bool (1) : il n'y a pas de surcharge pour int(*)() << std::endl; // surcharge fonction (18) à nouveau int x = 0; int* p1 = &x; volatile int* p2 = &x; std::cout << "p1: " << p1 << '\n' // surcharge `const void*`, affiche l'adresse << "p2: " << p2 << '\n'; // avant C++23 (P1147) : surcharge bool :), car // operator<<(const void*) ne correspond pas car il supprime le qualificateur `volatile` // Pour corriger cela, C++23 ajoute la surcharge `const volatile void*` (9), // qui affiche l'adresse comme attendu. }
Sortie possible :
42 true 3.140000 "Some text." true p1: 0x7ffcea766600 p2: 0x7ffcea766600
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 117 | C++98 |
les surcharges
(1-8,11-15)
déléguaient l'insertion à
num_put::put , mais il n'a pas de surcharges pour short , unsigned short , int , unsigned int , et float |
ils sont convertis
avant d'être passés à
num_put::put
|
| LWG 567 | C++98 |
la surcharge
(17)
se comportait comme une
FormattedOutputFunction
en raison de la résolution de LWG issue 60 |
elle se comporte comme une
UnformattedOutputFunction |
Voir aussi
|
insère des données de caractères ou insère dans un flux de rvalue
(fonction template) |
|
|
effectue l'entrée et la sortie de flux sur les chaînes
(fonction template) |
|
|
(C++17)
|
effectue la sortie de flux sur les vues de chaînes
(fonction template) |
|
effectue l'entrée et la sortie de flux des bitsets
(fonction template) |
|
|
sérialise et désérialise un nombre complexe
(fonction template) |
|
|
(C++11)
|
effectue l'entrée et la sortie de flux sur un moteur de nombres pseudo-aléatoires
(fonction template) |
|
(C++11)
|
effectue l'entrée et la sortie de flux sur une distribution de nombres pseudo-aléatoires
(fonction template) |
|
insère un caractère
(fonction membre publique) |
|
|
insère des blocs de caractères
(fonction membre publique) |
|
|
(C++17)
|
convertit une valeur entière ou à virgule flottante en une séquence de caractères
(fonction) |