Biblioteca estándar de C++ <iomanip>
<iomanip>es un archivo de cabecera de la biblioteca estándar de C++ que proporciona operaciones de formato para flujos de entrada/salida.
iomanipLas funciones de la biblioteca permiten a los desarrolladores controlar el formato de salida, como establecer el número de decimales, el ancho, la alineación, etc.
iomanipes la abreviatura de Input/Output Manipulators, y proporciona un conjunto de operadores para controlar el formato de los flujos de entrada/salida en la biblioteca estándar de C++. Es adecuado para los siguientes escenarios:
- Manejo del formato de números de punto flotante en cálculos científicos;
- Alineación y embellecimiento de datos;
- Mostrar valores numéricos en una base o formato específico.
Sintaxis
iomanipLas funciones de la biblioteca generalmente se combinan con<<y>>operadores para lograr el control del flujo de salida.
A continuación se presentan algunas de las más utilizadasiomanipfunciones:
| Funciones/manipuladores | Función | Código de ejemplo | Resultado de salida |
|---|---|---|---|
std::setw(int n) | Establece el ancho del campo, especifica el ancho para la próxima salida. | std::cout << std::setw(5) << 42; | 42 |
std::setfill(char) | Establece el carácter de relleno (por defecto es un espacio) | std::cout << std::setfill('*') << std::setw(5) << 42; | ***42 |
std::left | Establece la alineación a la izquierda | std::cout << std::left << std::setw(5) << 42; | 42 |
std::right | Establece la alineación a la derecha | std::cout << std::right << std::setw(5) << 42; | 42 |
std::internal | El signo a la izquierda, el resto a la derecha | std::cout << std::internal << std::setw(5) << -42; | - 42 |
std::setprecision(int) | Establece el número de dígitos significativos de los números de punto flotante | std::cout << std::setprecision(3) << 3.14159; | 3.14 |
std::fixed | Establece la salida de números de punto flotante en formato de punto fijo | std::cout << std::fixed << std::setprecision(2) << 3.14159; | 3.14 |
std::scientific | Establece la salida de números de punto flotante en formato de notación científica | std::cout << std::scientific << 3.14159; | 3.141590e+00 |
std::hex | Establece la visualización de enteros en hexadecimal (base 16) | std::cout << std::hex << 42; | 2a |
std::oct | Establece la visualización de enteros en octal (base 8) | std::cout << std::oct << 42; | 52 |
std::dec | Establece la visualización de enteros en decimal (base 10) (por defecto) | std::cout << std::dec << 42; | 42 |
std::showbase | Muestra el prefijo de la base (por ejemplo,0xindica hexadecimal) | std::cout << std::showbase << std::hex << 42; | 0x2a |
std::noshowbase | Oculta el prefijo de la base (por defecto) | std::cout << std::noshowbase << std::hex << 42; | 2a |
std::uppercase | Las letras hexadecimales se muestran en mayúsculas | std::cout << std::uppercase << std::hex << 42; | 2A |
std::nouppercase | Las letras hexadecimales se muestran en minúsculas (por defecto) | std::cout << std::nouppercase << std::hex << 42; | 2a |
std::showpos | Muestra delante de los números positivos+el signo | std::cout << std::showpos << 42; | +42 |
std::noshowpos | No muestra el+signo de los números positivos (por defecto) | std::cout << std::noshowpos << 42; | 42 |
std::boolalpha | Los valores booleanos se emiten comotrue/falseen la salida | std::cout << std::boolalpha << true; | true |
std::noboolalpha | Los valores booleanos se emiten como1/0en la salida (por defecto) | std::cout << std::noboolalpha << true; | 1 |
std::setbase(int n) | Establece la base de los enteros (admite 8, 10, 16) | std::cout << std::setbase(16) << 42; | 2a |
std::resetiosflags | Restablece el estado de flujo especificado | std::cout << std::resetiosflags(std::ios::showbase) << std::hex << 42; | 2a |
std::setiosflags | Establece el estado de flujo especificado | std::cout << std::setiosflags(std::ios::showbase) << std::hex << 42; | 0x2a |
Ejemplo
1. Configurar el ancho
Usandosetwse puede establecer el ancho de la salida. Si el número de caracteres del contenido de salida es menor que el ancho establecido, la parte restante se rellenará con espacios.
Ejemplo
#include <iomanip>
int main() {
std::cout << std::setw(10) << "Hello" << std::endl;
return 0;
}
Resultado de salida:
Hello
2. Configurar la precisión
Usandosetprecisionse puede establecer el número de dígitos significativos de los números de punto flotante.
Ejemplo
#include <iomanip>
int main() {
double pi = 3.141592653589793;
std::cout << "Default: " << pi << "\n";
std::cout << "Set precision (3): " << std::setprecision(3) << pi << "\n";
std::cout << "Set precision (7): " << std::setprecision(7) << pi << "\n";
return 0;
}
Resultado de salida:
Default: 3.14159 Set precision (3): 3.14 Set precision (7): 3.141593
3. Punto decimal fijo y notación científica
fixedyscientificSe puede controlar el formato de salida de los números de punto flotante.
Ejemplo
#include <iomanip>
int main() {
double num = 123456789.0;
std::cout << "Fixed: " << std::fixed << num << std::endl;
std::cout << "Scientific: " << std::scientific << num << std::endl;
return 0;
}
Resultado de salida:
Fixed: 123456789.000000 Scientific: 1.23456789e+08
4. Configurar el carácter de relleno
Usandosetfillse puede configurar el carácter de relleno, que generalmente se usa consetwjunto con.
Ejemplo
#include <iomanip>
int main() {
std::cout << std::setfill('*') << std::setw(10) << "World" << std::endl;
return 0;
}
Resultado de salida:
*****World
5. Configurar y restablecer indicadores de formato
setiosflagsyresetiosflagsSe pueden configurar o restablecer los indicadores de formato del flujo.
Ejemplo
#include <iomanip>
int main() {
std::cout << std::setiosflags(std::ios::uppercase) << std::hex << 255 << std::endl;
std::cout << std::resetiosflags(std::ios::uppercase) << std::hex << 255 << std::endl;
return 0;
}
Resultado de salida:
FF ffOtras extensiones