Salida con formato C++

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:

  • coutSalida 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 insertar coutun flujo endl, 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 重定向输出, .
  • cerrLa 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.
  • clogEl flujo también es un flujo de error estándar, la función es cerrla misma, la diferencia es que cerrla información se envía directamente a la pantalla sin pasar por el búfer, y clogla información en el búfer se almacena en el búfer, y endles 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 nbase ( 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;
// ----------- 输出如下 ----------- 
92 进制: 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*****

Supongo que te gusta

Origin blog.csdn.net/Gou_Hailong/article/details/130392170
Recomendado
Clasificación