operator<<,>>(std::basic_string)
Definido en el archivo de encabezado <string> | ||
template<class CharT, class Traits, class Allocator> std::basic_ostream<CharT, Traits>& | (1) | |
template<class CharT, class Traits, class Allocator> std::basic_istream<CharT, Traits>& | (2) | |
1) Se comporta como una función de salida formateada, FormattedOutputFunction. Después de construir y comprobar el objeto centinela, determina el relleno del formato de salida de la siguiente manera:
- a) si
str.size()
no es menor queos.width()
, usa el rango[str.begin(), str.end())
tal y como es; - b) de lo contrario, si (os.flags()& ios_base::adjustfield)== ios_base::left, ubica
os.width()-str.size()
copias del carácteros.fill()
después de la secuencia de caracteres; - c) de lo contrario, ubica
os.width()-str.size()
copias del carácteros.fill()
antes de la secuencia de caracteres.
Luego almacena cada carácter de la secuencia resultante (el contenido de str
más el relleno) al flujo de salida os
, como si se llamara a os.rdbuf()->sputn(seq, n), donde n=std::max(os.width(), str.size()).
Finalmente, llama a os.width(0) para cancelar los efectos de std::setw, si es que los hubo.
2) Se comporta como una función de entrada formateada, FormattedOutputFunction. Después de construir y comprobar el objeto centinela, que puede saltarse espacios en blanco a la cabeza, primero borra str
con str.erase(), luego lee caracteres de is
y los añade a str
como si fuera mediante str.append(1, c), hasta que una de las siguientes condiciones se vuelve verdadera:
- se leen
N
caracteres, dondeN
esis.width()
siis.width() > 0
, de lo contrario,N
esstr.max_size()
; - ocurre la condición de fin de archivo en el flujo
is
; - std::isspace(c,is.getloc()) es verdadero para el próximo carácter
c
enis
(este carácter de espacio en blanco permanece en el flujo de entrada).
Si no se extraen caracteres, entonces std::ios::failbit se establece en is
, que puede lanzar std::ios_base::failure.
Finalmente, llama a is.width(0) para cancelar los efectos de std::setw, si es que los hubo.
Contenido |
[editar]Excepciones
1) Puede lanzar std::ios_base::failure si se lanzó una excepción durante la salida.
2) Puede lanzar std::ios_base::failure si no se extrajeron caracteres de is
(p. ej., el flujo se encuentra al final del archivo, o consiste de espacios en blanco solamente), o si se lanza una excepción durante la entrada.
[editar]Parámetros
os | - | Un flujo de salida de caracteres. |
is | - | Un flujo de entrada de caracteres. |
str | - | La cadena a insertarse o extraerse. |
[editar]Valor de retorno
1) os
2) is
[editar]Ejemplo
#include <iostream>#include <string>#include <sstream> int main(){std::string saludo ="Hola, crayola!";std::istringstream is(saludo); std::string hola_coma;std::string crayola; is >> hola_coma; is >> crayola; std::cout<< saludo <<'\n';std::cout<< hola_coma <<'\n'<< crayola <<'\n';}
Salida:
Hola, crayola! Hola, crayola!