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) | (desde C++11) |
|
basic_ostream
&
operator
<<
(
unsigned
long
long
value
)
;
|
(5) | (desde 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) | (desde C++23) |
|
basic_ostream
&
operator
<<
(
std::
nullptr_t
)
;
|
(10) | (desde 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
valor
)
;
|
(14) | |
|
basic_ostream
&
operator
<<
(
float
value
)
;
|
(15) | |
|
basic_ostream
&
operator
<<
(
/* extended-floating-point-type */
value
)
;
|
(16) | (desde 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) | |
Inserta datos en el flujo.
badbit
.
- static_cast < long > ( static_cast < unsigned short > ( value ) ) , si flags ( ) & std:: ios_base :: basefield es std::ios_base::oct o std::ios_base::hex , o
- static_cast < long > ( value ) en caso contrario.
- static_cast < long > ( static_cast < unsigned int > ( value ) ) , si flags ( ) & std:: ios_base :: basefield es std::ios_base::oct o std::ios_base::hex , o
- static_cast < long > ( value ) en caso contrario.
- Si el rango es menor o igual que el de double , inserta static_cast < double > ( value ) como en (6) .
- De lo contrario, si el rango es menor o igual que el de long double , inserta static_cast < long double > ( value ) como en (7) .
- De lo contrario, una invocación de esta sobrecarga está condicionalmente soportada con semántica definida por la implementación.
-
- ocurre fin-de-archivo en la secuencia de entrada;
- la inserción en la secuencia de salida falla (en cuyo caso el carácter a insertar no se extrae);
- ocurre una excepción (en cuyo caso la excepción se captura).
failbit
y, si
failbit
está establecido en
exceptions()
, relanza la excepción.
Contenidos |
Parámetros
| value | - | valor entero, de punto flotante, booleano o puntero a insertar |
| func | - | función a llamar |
| sb | - | puntero al búfer de flujo desde el cual leer los datos |
Valor de retorno
Notas
No hay sobrecargas para punteros a miembros no estáticos , punteros a volátiles, (hasta C++23) o punteros a funciones (excepto aquellos con firmas aceptadas por las ( 18-20 ) sobrecargas).
-
Intentar imprimir tales objetos invoca una conversión implícita a
bool
, y, para cualquier valor de puntero no nulo, se imprime el valor
1
(a menos que se haya establecido
boolalpha, en cuyo caso se imprime true ).
Los argumentos de carácter y cadena de caracteres (por ejemplo, de tipo char o const char * ) son manejados por las sobrecargas no miembro de operator << .
- Intentar imprimir un carácter usando la sintaxis de llamada a función miembro (por ejemplo, std:: cout . operator << ( 'c' ) ; ) llamará a una de las sobrecargas en ( 2-5 ) o ( 11-14 ) e imprimirá el valor numérico.
- Intentar imprimir una cadena de caracteres usando la sintaxis de llamada a función miembro llamará a la sobrecarga (8) e imprimirá el valor del puntero en su lugar.
Overload (10) fue añadido por la resolución de LWG issue 2221 , pero nunca se implementa en ninguna implementación de biblioteca estándar bajo modos C++11/14.
Ejemplo
#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() // sobrecarga para int (12) << ' ' // sobrecarga no miembro << std::boolalpha // sobrecarga para función (18) << b // sobrecarga para bool (1) << " " // sobrecarga no miembro << std::fixed // sobrecarga para función (18) nuevamente << f // sobrecarga para double (6) << input.rdbuf() // sobrecarga para streambuf << fun // sobrecarga para bool (1): no hay sobrecarga para int(*)() << std::endl; // sobrecarga para función (18) nuevamente int x = 0; int* p1 = &x; volatile int* p2 = &x; std::cout << "p1: " << p1 << '\n' // sobrecarga `const void*`, imprime dirección << "p2: " << p2 << '\n'; // antes de C++23 (P1147): sobrecarga bool :), porque // operator<<(const void*) no coincide, ya que descarta el calificador `volatile` // Para corregir esto, C++23 añade sobrecarga `const volatile void*` (9), // que imprime la dirección como se espera. }
Salida posible:
42 true 3.140000 "Some text." true p1: 0x7ffcea766600 p2: 0x7ffcea766600
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 117 | C++98 |
las sobrecargas
(1-8,11-15)
delegaban la inserción a
num_put::put , pero no tiene sobrecargas para short , unsigned short , int , unsigned int , y float |
se convierten
antes de ser pasados a
num_put::put
|
| LWG 567 | C++98 |
la sobrecarga
(17)
se comportaba como una
FormattedOutputFunction
debido a la resolución de LWG issue 60 |
se comporta como una
UnformattedOutputFunction |
Véase también
|
inserta datos de caracteres o inserta en flujo de valor-r
(plantilla de función) |
|
|
realiza entrada y salida de flujo en cadenas
(plantilla de función) |
|
|
(C++17)
|
realiza salida de flujo en vistas de cadena
(plantilla de función) |
|
realiza entrada y salida de flujo de conjuntos de bits
(plantilla de función) |
|
|
serializa y deserializa un número complejo
(plantilla de función) |
|
|
(C++11)
|
realiza entrada y salida de flujo en motor de números pseudoaleatorios
(plantilla de función) |
|
(C++11)
|
realiza entrada y salida de flujo en distribución de números pseudoaleatorios
(plantilla de función) |
|
inserta un carácter
(función miembro pública) |
|
|
inserta bloques de caracteres
(función miembro pública) |
|
|
(C++17)
|
convierte un valor entero o de punto flotante a una secuencia de caracteres
(función) |