std:: setbase
|
Definido en el encabezado
<iomanip>
|
||
|
/*unspecified*/
setbase
(
int
base
)
;
|
||
Establece la base numérica del flujo. Cuando se usa en una expresión
out
<<
setbase
(
base
)
o
in
>>
setbase
(
base
)
, cambia el indicador
basefield
del flujo
out
o
in
, dependiendo del valor de
base
:
-
el valor
16
establece
basefielda std::ios_base::hex . - el valor 8 establece std::ios_base::oct .
- el valor 10 establece std::ios_base::dec .
Valores de
base
diferentes de 8, 10 o 16 restablecen
basefield
a cero, lo que corresponde a salida decimal y entrada dependiente del prefijo.
Contenidos |
Parámetros
| base | - | nuevo valor para basefield |
Valor de retorno
Un objeto de tipo no especificado tal que
-
si
out
es un objeto de tipo
std::
basic_ostream
<
CharT, Traits
>
, la expresión
out
<<
setbase
(
base
)
- tiene tipo std:: basic_ostream < CharT, Traits > &
- tiene valor out
- se comporta como si llamara a f ( out, base )
-
si
in
es un objeto de tipo
std::
basic_istream
<
CharT, Traits
>
, la expresión
in
>>
setbase
(
base
)
- tiene tipo std:: basic_istream < CharT, Traits > &
- tiene valor in
- se comporta como si llamara a f ( in, base )
donde la función f se define como:
void f(std::ios_base& str, int base) { // establecer basefield str.setf(base == 8 ? std::ios_base::oct : base == 10 ? std::ios_base::dec : base == 16 ? std::ios_base::hex : std::ios_base::fmtflags(0), std::ios_base::basefield); }
Ejemplo
#include <iomanip> #include <iostream> #include <sstream> int main() { std::cout << "Parsing string \"10 0x10 010\"\n"; int n1, n2, n3; std::istringstream s("10 0x10 010"); s >> std::setbase(16) >> n1 >> n2 >> n3; std::cout << "hexadecimal parse: " << n1 << ' ' << n2 << ' ' << n3 << '\n'; s.clear(); s.seekg(0); s >> std::setbase(0) >> n1 >> n2 >> n3; std::cout << "prefix-dependent parse: " << n1 << ' ' << n2 << ' ' << n3 << '\n'; std::cout << "hex output: " << std::setbase(16) << std::showbase << n1 << ' ' << n2 << ' ' << n3 << '\n'; }
Salida:
Parsing string "10 0x10 010" hexadecimal parse: 16 16 16 prefix-dependent parse: 10 16 8 hex output: 0xa 0x10 0x8
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 183 | C++98 |
setbase
solo podía usarse con flujos
de tipo std::ostream o std::istream |
utilizable con cualquier
flujo de caracteres |
Véase también
|
cambia la base utilizada para E/S de enteros
(función) |
|
|
controla si se utiliza prefijo para indicar la base numérica
(función) |