¿Cómo manipular el objeto cout usando la biblioteca IOS de C++?

La clase C++ ios_base tiene sus aspectos para formatear el objeto cout para mostrar diferentes características de formato. Por ejemplo, la siguiente clase ios_base puede formatear el objeto cout para mostrar los puntos decimales finales, agregar + antes de los números positivos y varias otras características de formato usando constantes estáticas de ámbito de clase. 

Constantes estáticas de ámbito de clase:

Las constantes estáticas de ámbito de clase que se definen en la declaración de clase ios_base actúan como un complemento de ayuda para dar formato a diferentes funciones de formato. Ámbito de clase significa utilizar el operador de resolución de ámbito (::) con el nombre constante. Las constantes estáticas de ámbito de clase definidas en la clase ios_base son bits individuales también llamados indicadores. Para habilitar las funciones de formato, configure la bandera o el bit, lo que significa configurar el bit en 1. 

Las constantes estáticas de ámbito de clase pueden ser de dos tipos:

  • Banderas independientes: significa que no es necesario tomar ninguna bandera o bit para el segundo argumento.
  • Banderas no independientes: significa que necesitamos tomar una bandera o bit para el segundo argumento. Proporciona tres conjuntos de indicadores de formato para usar como segundo argumento y tiene dos o tres constantes para usar como primer argumento.

Indicadores independientes: la siguiente tabla muestra las constantes de formato independientes estáticas del alcance de la clase y sus funciones :

No. S. Nombre de las constantes de formato Objetivo       
1. ios_base::boolalfa Mostrar valores booleanos como «verdadero» y «falso».
2. ios_base::punto de presentación Mostrar puntos decimales finales.
3. ios_base::mayúsculas Use letras mayúsculas para valores hexadecimales, notación científica.
4. ios_base::showpos Use + antes de números positivos.
5. ios_base::showbase Use prefijos base 0x para valores hexadecimales, 0 para valores oct. 

setf(): la clase ios_base proporciona una función setf() cuyo propósito es establecer el bit o indicador individual. El método Setf() proporciona dos prototipos. 

Sintaxis:

fmtflags setf (fmtflags);

Parámetros:

  • fmtflags- Acepta un bit o una bandera.

Valor devuelto: Devuelve el resultado de la constante de formato.

  • El argumento fmtflags es un tipo de máscara de bits que se usa para almacenar valores de bits individuales y su propósito es formatear banderas o establecer un bit en 1.
  • La función Setf() se puede invocar usando el objeto cout. Por ejemplo, cout.setf(ios_base::showpos).
  • El valor de retorno de la constante de formato se puede guardar. Por ejemplo, ios_base::fmtflags prev = cout.setf(ios_base::showpos). Por lo tanto, prev almacena el resultado de las constantes estáticas del ámbito de la clase definidas en la clase ios_base como un bit o un indicador.

A continuación se muestra el programa C++ para implementar la función setf():

C++

// C++ program to format cout object
// to display plus sign before positive
// decimal numbers as C++ treats
// hexadecimal and octal numbers
// as unsigned.
#include <bits/stdc++.h>
using namespace std;
 
// Driver code
int main()
{
    double num = 21.34;
 
    // Setting the cout object
    // to show plus sign
    cout.setf(ios_base::showpos);
 
    // Prints the result
    cout << "The result is: " <<
             num << endl;
 
    return 0;
}
Producción

The result is: +21.34

Banderas no independientes:

La siguiente tabla muestra diferentes constantes de formato no independientes estáticas de ámbito de clase y su función:

Banderas no independientes constantes Objetivo     
ios_base::campo base ios_base::dec   Para tomar entradas y mostrar valores decimales 
ios_base::oct Para tomar entradas y mostrar valores octales
ios_base::hexadecimal Para tomar entradas y mostrar valores hexadecimales
ios_base::campo flotante ios_base::fijo Para tomar la entrada como notación de punto fijo y mostrarla
en valores de punto flotante
ios_base::científico Para tomar la entrada como notación de punto científico y
mostrarla en valores de punto flotante
ios_base::campo de ajuste ios_base::izquierda Muestra un valor en el extremo izquierdo del campo.
ios_base::derecho Muestra un valor en el extremo derecho del campo.
ios_base::interno Muestre un valor a la izquierda del campo y el resto
del número a la derecha del campo.

Los campos estáticos de ámbito de clase se utilizarán como segundo argumento para indicar qué bits se borrarán y las constantes se utilizarán como primer argumento para indicar qué bit se establecerá. Invocaremos la función setf() para formatear el objeto cout usando el segundo prototipo.

Sintaxis-

fmtflags setf (fmtflags, fmtflags);

Parámetros:

  • fmtflags- Acepta 2 bits o banderas.

Valor devuelto: Devuelve el resultado de la constante de formato.

  • La función Setf() se puede invocar usando el objeto cout. Por ejemplo, cout.setf(ios_base::fixed, ios_base::floatfield).
  • Aquí el segundo argumento indica qué bit borrar. La función setf() formateó el objeto cout para mostrarlo en notación de punto fijo y hemos usado notación científica. La constante ios_base::fixed cambiará la notación científica de bits a notación de punto fijo. Esto se llama borrar los bits. Y el primer argumento establece uno de esos bits en 1.
  • El valor de retorno de la constante de formato se puede guardar. Por ejemplo, ios_base::fmtflags prev_s = cout.setf(ios_base::fixed, ios_base::floatfield). Por lo tanto, prev_s almacena el resultado de las constantes estáticas de ámbito de clase como indicador individual definido en la clase ios_base.

A continuación se muestra el programa C++ para implementar el enfoque anterior:

C++

// C++ program to format cout
// object to display in floating
// point values
#include <bits/stdc++.h>
using namespace std;
 
// Driver code
int main()
{
    double num = 21.34;
 
    // Formatting the cout object
    // to display in fixed-point
    // notation
    cout.setf(ios_base::fixed,
              ios_base::floatfield);
 
    // Instructing the cout object
    // to show precision of 4
    cout.precision(4);
       
      // Prints the result
    cout << "The result is: " <<
             num << endl;
    return 0;
}
Producción

The result is: 21.3400

unsetf(): la clase ios_base proporciona una función unsetf() que tiene sus aspectos para volver a su resultado original. La función setf() establece un bit en 1, y la función unsetf() establece un bit en 0.

Sintaxis:

anular unsetf (fmtflags);

Parámetros:

  • fmtflags- Acepta 1 bit o bandera.

Valor de Retorno: No devuelve el resultado de la constante de formato.

A continuación se muestra el programa C++ para implementar la función unsetf():

C++

// C++ program to illustrate
// unsetf() function
#include <bits/stdc++.h>
using namespace std;
 
// Driver code
int main()
{
    double num = 21.34;
 
    // Formatting the cout object
    cout.setf(ios_base::fixed,
              ios_base::floatfield);
    cout.precision(4);
 
    // Prints the result
    cout << "The resulted number: " <<
             num << endl;
     
    // Restoring the cout object
    cout.unsetf(ios_base::floatfield);
 
    // Prints the original number
    cout << "The original number: " <<
             num << endl;
     
    return 0;
}
Producción

The resulted number: 21.3400
The original number: 21.34

Publicación traducida automáticamente

Artículo escrito por user_ax8z y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *