Para dar formato a los
datos que se muestran por pantalla, C++ asocia con el stream de salida un
conjunto de manipuladores que permiten modificar la forma en la que son
visualizados los resultados.
Un manipulador
equivale a una llamada a una función.
Algunos de los
manipuladores más comunes son los siguientes:
dec conversión a
decimal
hex conversión a
hexadecimal
oct conversión a
octal
skipws extrae un
espacio en blanco inicial
endl se imprime
un ‘\n’ y se vacía el buffer de salida
flush se vacía el
buffer de salida
setw(int
w) establece la anchura mínima de campo
setprecision(int
p) establece el número de cifras significativas, por defecto 6.
setfill(char
ch) establece el carácter de relleno
left la salida se
alinea a la izquierda
rigth la salida se
alinea a la derecha
internal se alinea el
signo y los caracteres indicativos de la base por la izquierda y las cifras por
la derecha
showbase se muestra
la base de los valores numéricos
showpoint se muestra
el punto decimal
uppercase los
caracteres de formato aparecen en mayúsculas
showpos se muestra
el signo (+) en los valores positivos
scientific notación
científica para coma flotante
fixed notación
normal de C++ para coma flotante
setiosflag(long
i) establece una lista de flags de formato
resetriosflag(long
i) suprime una lista de flags de formato
Los manipuladores
pueden tener argumentos o no tenerlos. Los manipuladores sin argumentos (endl,
flush, etc.) están definidos en iostream. Los que tienen
argumentos están declarados en iomanip.
Un manipulador sólo
afecta al stream (cin, cout, etc.) al que se aplica.
Un manipulador en
C++ se utiliza de la forma:
cout << hex << 100;
cout << setw(10) << “Hola”
<< endl;
El efecto de los
manipuladores permanece en el stream correspondiente hasta que se cambian por
otro manipulador, a excepción de setw(n) que hay que introducirlo en el flujo
antes de cada dato al que se le quiere aplicar ese ancho de campo.
Ejemplo:
//*********************************************************
// Ejemplo de uso de manipuladores setfill y
setw
//*********************************************************
#include <iostream>
#include <iomanip> //
define diferentes manipuladores
using namespace std;
int main(void)
{
cout <<
setfill('.'); // manipulador de relleno.
//el carácter de
relleno será el punto
cout <<
"Listado de calificaciones\n" << endl;
cout
<< "Roberto Aniorte" << setw(20) << "8.5"
<< endl;
cout << "Andrea Gutierrez"
<< setw(19) << "6.9" << endl;
cout << "Isabel Sanchez" << setw(21) << "5.7"
<< endl;
cout << "Anastasio Castro"
<< setw(19) << "7.5" << endl;
cout << "Barbara Lopez"
<< setw(22) << "7.8" << endl;
cout << "Martin Garcia"
<< setw(22) << "9.1" << endl;
cout << setfill('\0'); // se restablece el carácter de relleno
cout << endl;
system("pause");
}
Este programa muestra:
Otro ejemplo de uso de
manipuladores:
//Ejemplo de uso de manipuladores
#include <iostream>
#include
<iomanip>
using namespace std;
int main(void)
{
double a1 = 101.179;
double
a2 = 3.12;
cout << "a1->" << a1 << endl;
cout << "a2->" << a2 << endl;
cout << endl;
cout << fixed << "a1->" << a1 <<
endl;
cout << "a2->" << a2 << endl;
cout
<< endl;
cout << "a1->" <<
setprecision(1) << a1 << endl;
cout << "a2->" <<
a2 << endl;
cout << endl;
cout << "a1->" <<
setw(10) << setfill('.') << a1 << endl;
cout << "a2->" <<
a2 << endl;
cout << "a1->" <<
setw(12) << a1 << endl;
system("pause");
}
Este programa muestra como salida:
Otro ejemplo de uso de manipuladores:
// programa que lee un radio y
calcula
// la longitud de la
circunferencia
// el área del círculo
// y el volumen de la esfera
correspondiente a ese radio
#include
<iostream>
#include
<iomanip>
#include
<cmath>
using namespace std;
int main(void)
{
const double PI = 3.1416;
double radio;
cout << "Introduce el
valor del radio : ";
cin >>
radio;
cout <<
fixed << setprecision(2); // notación en coma flotante
// con 2
decimales
cout
<< endl << "Longitud de la circunferencia: " <<
2*PI*radio;
cout << endl
<< "Area del circulo: " << PI*pow(radio,2);
cout <<
endl << "Volumen de la esfera: ";
cout << (4.0/3)*PI*pow(radio,3) << endl;
system("pause");
}
Este programa muestra como salida:
cout << "Listado de calificaciones\n" << endl;
ResponderEliminarcout << setfill('.') << left;
cout << setw(32) << "Roberto Aniorte" << "8.5" << endl;
cout << setw(32) << "Andrea Gutierrez" << "6.9" << endl;
cout << setw(32) << "Isabel Sanchez" << "5.7" << endl;
cout << setw(32) << "Anastasio Castro" << "7.5" << endl;
cout << setw(32) << "Barbara Lopez" << "7.8" << endl;
cout << setw(32) << "Martin Garcia" << "9.1" << endl;
cout << setw(32) << setfill('\0'); // se restablece el carácter de relleno
cout << endl;
system("pause");
GOOOOOOOD
ResponderEliminar