operator<<,>> (std::basic_string)
|
Definido en el 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) | |
Luego inserta cada carácter de la secuencia resultante seq (el contenido de str más el relleno) al flujo de salida os como si llamara a os. rdbuf ( ) - > sputn ( seq, n ) , donde n es std:: max ( os. width ( ) , str. size ( ) ) Finalmente, llama a os. width ( 0 ) para cancelar los efectos de std::setw , si los hay.
|
Equivalente a return os << std:: basic_string_view < CharT, Traits > ( str ) ; . |
(desde C++17) |
-
Ncaracteres son leídos, dondeNes is. width ( ) si is. width ( ) > 0 , de lo contrarioNes str. max_size ( ) , - ocurre la condición de fin de archivo en el flujo is , o
- std:: isspace ( c, is. getloc ( ) ) es true para el siguiente carácter c en is (este carácter de espacio en blanco permanece en el flujo de entrada).
Si no se extrae ningún carácter, entonces std::ios::failbit se establece en is , lo cual puede lanzar std::ios_base::failure .
Finalmente, llama a is. width ( 0 ) para cancelar los efectos de std::setw , si los hubiera.
Contenidos |
Excepciones
Parámetros
| os | - | un flujo de salida de caracteres |
| is | - | un flujo de entrada de caracteres |
| str | - | la cadena a insertar o extraer |
Valor de retorno
Ejemplo
#include <iostream> #include <sstream> #include <string> int main() { std::string greeting = "Hello, whirled!"; std::istringstream iss(greeting); std::string hello_comma, whirled, word; iss >> hello_comma; iss >> whirled; std::cout << greeting << '\n' << hello_comma << '\n' << whirled << '\n'; // Reset the stream iss.clear(); iss.seekg(0); while (iss >> word) std::cout << '+' << word << '\n'; }
Salida:
Hello, whirled! Hello, whirled! +Hello, +whirled!
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 25 | C++98 | n era el menor entre os. width ( ) y str. size ( ) | n es el mayor de ellos |
| LWG 90 | C++98 |
std::
isspace
(
c, getloc
(
)
)
se usaba para verificar
espacios, pero
getloc
no está declarado en
<string>
|
reemplazado
getloc
(
)
con is. getloc ( ) |
| LWG 91 | C++98 |
operator>>
no se comportaba
como una FormattedInputFunction |
se comporta como una
FormattedInputFunction |
| LWG 211 | C++98 |
operator>>
no establecía
failbit
si no se extraía ningún carácter
|
establece
failbit
|
| LWG 435 | C++98 |
los caracteres se insertaban mediante
os.
rdbuf
(
)
-
>
sputn
(
str.
data
(
)
, n
)
,
y la resolución de LWG issue 25 hizo el comportamiento indefinido si os. width ( ) es mayor que str. size ( ) |
determina el relleno
primero e inserta la secuencia de caracteres rellenada en su lugar |
| LWG 586 | C++98 |
operator<<
no se comportaba
como una FormattedOutputFunction |
se comporta como una
FormattedOutputFunction |
Véase también
|
(C++17)
|
realiza salida de flujo en string views
(plantilla de función) |