Salida con formato en C++. Manipuladores

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:



2 comentarios:

  1. cout << "Listado de calificaciones\n" << endl;
    cout << 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");

    ResponderEliminar