C++ lo ayuda a formatear las operaciones de E/S, como determinar la cantidad de dígitos que se mostrarán después del punto decimal, especificar la base numérica, etc.
Ejemplo:
- Si queremos agregar el signo + como prefijo de la salida, podemos usar el formato para hacerlo:
stream.setf(ios::showpos) If input=100, output will be +100
- Si queremos agregar ceros finales en la salida para que se muestren cuando sea necesario usando el formato:
stream.setf(ios::showpoint) If input=100.0, output will be 100.000
Nota: Aquí, flujo se refiere a los flujos definidos en C++ como cin, cout, cerr, clog.
Hay dos formas de hacerlo:
- Usando la clase ios o varias funciones miembro de ios.
- Uso de manipuladores (funciones especiales)
- Formateo usando los miembros de ios:
La secuencia tiene las banderas de formato que controlan la forma de formatearla. Usando esta función setf, podemos establecer las banderas, que nos permiten mostrar un valor en un formato particular. La clase ios declara una enumeración de máscara de bits llamada fmtflags en la que se definen los valores (showbase, showpoint, oct, hex, etc.). Estos valores se utilizan para establecer o borrar los indicadores de formato.
Algunas funciones estándar de la clase ios son:
- width(): el método de ancho se utiliza para establecer el ancho de campo requerido. La salida se mostrará en el ancho dado
- precision(): el método de precisión se utiliza para establecer el número del punto decimal en un valor flotante
- fill(): el método de relleno se utiliza para establecer un carácter para completar el espacio en blanco de un campo
- setf(): el método setf se usa para establecer varios indicadores para formatear la salida
- unsetf(): el método unsetf se usa para eliminar la configuración de la bandera
Laboral:
#include<bits/stdc++.h>
using
namespace
std;
// The width() function defines width
// of the next value to be displayed
// in the output at the console.
void
IOS_width()
{
cout <<
"--------------------------\n"
;
cout <<
"Implementing ios::width\n\n"
;
char
c =
'A'
;
// Adjusting width will be 5.
cout.width(5);
cout << c <<
"\n"
;
int
temp = 10;
// Width of the next value to be
// displayed in the output will
// not be adjusted to 5 columns.
cout<<temp;
cout <<
"\n--------------------------\n"
;
}
void
IOS_precision()
{
cout <<
"\n--------------------------\n"
;
cout <<
"Implementing ios::precision\n\n"
;
cout <<
"Implementing ios::width"
;
cout.setf(ios::fixed, ios::floatfield);
cout.precision(2);
cout<<3.1422;
cout <<
"\n--------------------------\n"
;
}
// The fill() function fills the unused
// white spaces in a value (to be printed
// at the console), with a character of choice.
void
IOS_fill()
{
cout <<
"\n--------------------------\n"
;
cout <<
"Implementing ios::fill\n\n"
;
char
ch =
'a'
;
// Calling the fill function to fill
// the white spaces in a value with a
// character our of choice.
cout.fill(
'*'
);
cout.width(10);
cout<<ch <<
"\n"
;
int
i = 1;
// Once you call the fill() function,
// you don't have to call it again to
// fill the white space in a value with
// the same character.
cout.width(5);
cout<<i;
cout <<
"\n--------------------------\n"
;
}
void
IOS_setf()
{
cout <<
"\n--------------------------\n"
;
cout <<
"Implementing ios::setf\n\n"
;
int
val1=100,val2=200;
cout.setf(ios::showpos);
cout<<val1<<
" "
<<val2;
cout <<
"\n--------------------------\n"
;
}
void
IOS_unsetf()
{
cout <<
"\n--------------------------\n"
;
cout <<
"Implementing ios::unsetf\n\n"
;
cout.setf(ios::showpos|ios::showpoint);
// Clear the showflag flag without
// affecting the showpoint flag
cout.unsetf(ios::showpos);
cout<<200.0;
cout <<
"\n--------------------------\n"
;
}
// Driver Method
int
main()
{
IOS_width();
IOS_precision;
IOS_fill();
IOS_setf();
IOS_unsetf();
return
0;
}
Producción:-------------------------- Implementing ios::width A 10 -------------------------- -------------------------- Implementing ios::fill *********a ****1 -------------------------- -------------------------- Implementing ios::setf +100 +200 -------------------------- -------------------------- Implementing ios::unsetf 200.000 --------------------------
- Formateo usando manipuladores
La segunda forma de modificar los parámetros de formato de un flujo es mediante el uso de funciones especiales denominadas manipuladores que se pueden incluir en una expresión de E/S.
Los manipuladores estándar se muestran a continuación:- boolalpha: el manipulador boolalpha de los manipuladores de flujo en C++ se usa para activar el indicador bool alpha
- dec: el manipulador dec de los manipuladores de flujo en C++ se usa para activar el indicador dec
- endl: el manipulador endl de los manipuladores de flujo en C++ se usa para generar un carácter de nueva línea.
- y: El manipulador y de los manipuladores de flujo en C++ se usa para vaciar el flujo
- extremos: el manipulador de extremos de los manipuladores de flujo en C++ se usa para generar un valor nulo
- corregido: el manipulador fijo de los manipuladores de flujo en C++ se usa para activar el indicador fijo
- vaciar: el manipulador de vaciado de los manipuladores de flujo en C++ se usa para vaciar un flujo
- hexadecimal: el manipulador hexadecimal de los manipuladores de flujo en C++ se utiliza para activar el indicador hexadecimal
- interno : el manipulador interno de los manipuladores de flujo en C++ se usa para activar el indicador interno
- izquierda : el manipulador izquierdo de los manipuladores de flujo en C++ se usa para activar la bandera izquierda
- noboolalpha : el manipulador noboolalpha de los manipuladores de flujo en C++ se usa para desactivar el indicador bool alpha
- noshowbase : el manipulador noshowbase de los manipuladores de flujo en C++ se usa para desactivar la bandera de exhibición
- noshowpoint : el manipulador noshowpoint de los manipuladores de flujo en C++ se usa para desactivar el indicador de punto de visualización
- noshowpos : el manipulador noshowpos de los manipuladores de flujo en C++ se usa para desactivar el indicador showpos
- noskipws : el manipulador noskipws de los manipuladores de flujo en C++ se usa para desactivar el indicador skipws
- nounitbuf : el manipulador nounitbuf de los manipuladores de flujo en C++ se usa para desactivar el indicador de beneficio de la unidad
- nouppercase : el manipulador nouppercase de los manipuladores de flujo en C++ se usa para desactivar el indicador de mayúsculas
- oct : el manipulador oct de los manipuladores de flujo en C++ se usa para activar el indicador oct
- resetiosflags(fmtflags f) : El manipulador resetiosflags de los manipuladores de flujo en C++ se usa para desactivar el indicador especificado en f
- derecha : el manipulador derecho de los manipuladores de flujo en C++ se usa para activar la bandera derecha
- científico : el manipulador científico de los manipuladores de flujo en C++ se usa para activar la bandera científica
- setbase(int base) : El manipulador setbase de los manipuladores de flujo en C++ se usa para establecer la base numérica en base
- setfill(int ch) : El manipulador setfill de los manipuladores de flujo en C++ se usa para establecer el carácter de relleno en ch
- setiosflags(fmtflags f): el manipulador setiosflags de los manipuladores de flujo en C++ se usa para Activar el indicador especificado en f
- setprecision(int p): el manipulador setprecision de los manipuladores de flujo en C++ se usa para establecer el número de dígitos de precisión
- setw(int w): el manipulador setw de los manipuladores de flujo en C++ se usa para establecer el ancho del campo en w
- showbase : el manipulador showbase de los manipuladores de flujo en C++ se usa para activar el indicador showbase
- showpoint : el manipulador de showpoint de los manipuladores de flujo en C++ se usa para activar el indicador de punto de visualización
- showpos : el manipulador showpos de los manipuladores de flujo en C++ se usa para activar el indicador showpos
- skipws : el manipulador skipws de los manipuladores de flujo en C++ se usa para activar el indicador skipws
- unitbuf : el manipulador unitbuf de los manipuladores de flujo en C++ se usa para activar el indicador unitbuf
- uppercase : el manipulador de mayúsculas de los manipuladores de flujo en C++ se usa para activar la bandera de mayúsculas
- ws : el manipulador ws de los manipuladores de flujo en C++ se usa para omitir los espacios en blanco iniciales
Para acceder a los manipuladores que toman parámetros (como setw()), debe incluir el archivo de encabezado «iomanip» en su programa.
Ejemplo:
#include <iomanip>
#include <iostream>
using
namespace
std;
void
Example()
{
// performs ssame as setf( )
cout << setiosflags(ios::showpos);
cout << 123<<
"\n"
;
// hexadecimal base (i.e., radix 16)
cout << hex << 100 << endl;
// Set the field width
cout << setfill(
'*'
) << setw(10) << 2343.0;
}
int
main()
{
Example();
return
0;
}
Producción:+123 64 *****+2343
El manipulador setiosflags().
Publicación traducida automáticamente
Artículo escrito por Somil_singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA