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; }
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; }
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; }
The resulted number: 21.3400 The original number: 21.34