Directorio de artículos
Parte I Introducción
Esta publicación de blog principalmente resuelve la forma de salida con formato C ++.
Parte II Control de salida
Cap. I conocimientos básicos
acerca deflujo de salida, generalmente existen tres tipos: cout, cerr, clog
, y sus diferencias son las siguientes:
cout
Salida amortiguada, por defecto la pantalla. Esta es una salida con búfer, que es la salida estándar; correspondientemente abre un búfer en la memoria para almacenar los datos en el flujo. Al insertarcout
un flujoendl
, independientemente de si el búfer está lleno o no, inmediatamente generará todos los data en el stream.data, e inserte una nueva línea. se puede enviar a un archivo, es decir重定向输出
, .cerr
La salida directa sin almacenamiento en búfer, generalmente utilizada para generar información de error rápidamente, es un error estándar, por defecto está asociado al flujo de salida estándar, pero no está almacenado en búfer, es decir, los mensajes de error se pueden enviar directamente a la pantalla sin esperar. para almacenamiento en búfer Solo se muestra cuando se ingresa el área o un carácter de nueva línea.clog
El flujo también es un flujo de error estándar, la función escerr
la misma, la diferencia es quecerr
la información se envía directamente a la pantalla sin pasar por el búfer, yclog
la información en el búfer se almacena en el búfer, yendl
es salida cuando el búfer está lleno o encontrado.
Las funciones que controlan el formato de salida son las siguientes:
función | significado |
---|---|
dec |
establecer entero a valor predeterminado global decimal |
hex |
establecer entero en hexadecimal global |
oct |
establecer entero a octal global |
setbase(n) |
establecer entero en n base ( n=8,10,16 ) |
setw(14) |
Establezca la longitud de salida del siguiente objeto de salida en 14, complete los espacios antes de que el objeto no sea lo suficientemente largo para la alineación correcta |
setfill('*') |
Después del uso setw(n) , la longitud no es suficiente para completar * el global |
setprecision(3) |
Configure la precisión del siguiente objeto de salida para retener 3 dígitos después del punto decimal |
fixed |
Configure el número de punto flotante para que se muestre con un número fijo de lugares decimales |
scientific |
Establezca el número de punto flotante que se expresará en notación científica |
left |
salida global alineada a la izquierda |
right |
salida predeterminada global alineada a la derecha |
skipws |
ignorar los espacios iniciales |
uppercase |
Salida E en notación científica y X en salida hexadecimal en mayúsculas, caso contrario en minúsculas. |
showpos |
+ Muestra el número cuando se emite un número positivo |
showpoint |
forzar el punto decimal |
resetiosflags() |
Finalice el estado del formato de salida que se ha establecido, y el contenido debe especificarse entre paréntesis (no entiendo TODO) |
Nota:
- Necesita agregar un archivo de encabezado
#include <iomanip>
- Global: indica que la configuración actual continuará hasta que se cambie la configuración.
salida binaria
El cout de C++ puede generar directamente datos octales, decimales y hexadecimales, pero no admite la salida binaria directa y necesita llamar a <bitset>
funciones de biblioteca. Aquí hay un ejemplo de uso:
#include <bitset>
#include <iostream>
using namespace std;
cout << "8.25的2进制: " << bitset<64>(8.25) << endl;
// ----------- 输出如下 -----------
9 的 2 进制: 1001
// 其中 bitset<n> 中的 n 控制输出二进制的位数
ps: ¿Cómo generar binario decimal?
Ejemplo de uso del Cap.II
Mantener tres lugares decimales
cout << fixed << setprecision(3) << 5.564854 << endl;
// ------------ output -------------
5.565
La longitud de salida de control es 10, si la longitud no es suficiente, se complementará antes -
, y la salida hexadecimal
cout << setw(10) << setfill('-') << hex << 56 << endl;
// ------------ output -------------
--------38
Convierta números a caracteres, complete ceros antes de que el número de dígitos sea insuficiente; la longitud de salida es 10, complete si la longitud es insuficiente *
; salida alineada a la izquierda
int num = 1024; char strNum[64];
sprintf_s(strNum, 64, "%05d", num);
cout << setw(10) << setfill('*') << left << strNum << endl;
// ------------ output -------------
01024*****