Biblioteca iomanip de C ++ - función put_time

Descripción

Esta función accede a la secuencia de salida construyendo primero un objeto de tipo basic_ostream :: sentry. Luego (si la evaluación del objeto centinela es verdadera), llama a time_put :: put (usando la configuración regional seleccionada de la secuencia) para realizar tanto el formateo como las operaciones de inserción, ajustando los indicadores de estado internos de la secuencia en consecuencia. Finalmente, destruye el objeto centinela antes de regresar.

Se utiliza para insertar la representación de la información de fecha y hora señalada por tmb, formateándola como se especifica en el argumento fmt.

Declaración

A continuación se muestra la declaración de la función std :: put_time.

template <class charT>
/*unspecified*/ put_time (const struct tm* tmb, const charT* fmt);

Parámetros

tmb- Puntero al objeto de tipo struct tm con la información de fecha y hora a formatear. struct tm es una clase definida en el encabezado <ctime>.

fmt- Cadena C utilizada por time_put :: poner como cadena de formato. Contiene cualquier combinación de caracteres regulares y especificadores de formato especial. Estos especificadores de formato son reemplazados por la función a los valores correspondientes para representar el tiempo especificado en tmb.

Todos comienzan con un signo de porcentaje (%) y se muestran a continuación:

especificador Reemplazado por Ejemplo
%a Nombre abreviado del día de la semana * Thu
%A Nombre completo del día de la semana * Thursday
%b Nombre del mes abreviado * Aug
%B Nombre del mes completo * August
%c Representación de fecha y hora * Thu Aug 23 14:55:02 2001
%C Año dividido por 100 y truncado a entero ( 00-99) 20
%d Día del mes, relleno con ceros ( 01-31) 23
%D MM/DD/YYFecha corta , equivalente a%m/%d/%y 08/23/01
%e Día del mes, relleno con espacio ( 1-31) 23
%F YYYY-MM-DDFecha corta , equivalente a%Y-%m-%d 2001-08-23
%g Año basado en la semana, dos últimos dígitos ( 00-99) 01
%G Año basado en la semana 2001
%h Nombre del mes abreviado * (igual que %b) Aug
%H Hora en formato 24h ( 00-23) 14
%I Hora en formato de 12h ( 01-12) 02
%j Día del año ( 001-366) 235
%m Mes como número decimal ( 01-12) 08
%M Minuto ( 00-59) 55
%n Carácter de nueva línea ( '\n')
%p Designación AM o PM PM
%r Reloj de 12 horas * 02:55:02 pm
%R 24 horas HH:MM, equivalente a%H:%M 14:55
%S Segundo ( 00-61) 02
%t Carácter de tabulación horizontal ( '\t')
%T Formato de hora ISO 8601 ( HH:MM:SS), equivalente a%H:%M:%S 14:55:02
%u Día de la semana ISO 8601 como número con lunes como 1( 1-7) 4
%U Número de semana con el primer domingo como primer día de la semana uno ( 00-53) 33
%V Número de semana ISO 8601 ( 00-53) 34
%w Día de la semana como un número decimal con el domingo como 0( 0-6) 4
%W Número de semana con el primer lunes como primer día de la semana uno ( 00-53) 34
%x Representación de fecha * 08/23/01
%X Representación de tiempo * 14:55:02
%y Año, dos últimos dígitos ( 00-99) 01
%Y Año 2001
%z

Desplazamiento ISO 8601 de UTC en la zona horaria (1 minuto = 1, 1 hora = 100)

Si no se puede terminar la zona horaria, no hay caracteres

+100
%Z

Nombre o abreviatura de la zona horaria *

Si no se puede terminar la zona horaria, no hay caracteres

CDT
%% Una %señal %

Valor devuelto

Sin especificar. Esta función solo debe usarse como manipulador de flujo.

Los errores se señalan modificando los indicadores de estado internos de la transmisión:

bandera error
eofbit -
fallo La función no pudo formatear tmb según lo especificado por fmt (también se puede configurar si la construcción decentinela ha fallado).
badbit

O la inserción en la secuencia falló o se produjo algún otro error (como cuando esta función detecta una excepción lanzada por una operación interna).

Cuando se establece, es posible que la integridad de la transmisión se haya visto afectada.

Excepciones

Basic guarantee - si se lanza una excepción, el objeto está en un estado válido.

Lanza una excepción de falla de tipo de miembro si la marca de estado de error resultante no es goodbit y las excepciones de miembro se establecieron para lanzar para ese estado.

Cualquier excepción lanzada por una operación interna es capturada y manejada por la función, configurando badbit. Si badbit se estableció en la última llamada a excepciones, la función vuelve a generar la excepción detectada.

Carreras de datos

Accede al objeto apuntado por tmb y la matriz apuntada por fmt.

Modifica el objeto de flujo donde se inserta.

El acceso simultáneo al mismo objeto de transmisión puede causar carreras de datos, excepto para los objetos de transmisión estándar (cout, cerr, clog, wcout, wcerr y wclog) cuando estos están sincronizados con stdio (en este caso, no se inician carreras de datos, aunque no las garantías se dan en el orden en que se insertan los caracteres de varios hilos).

Ejemplo

En el siguiente ejemplo se explica la función put_time.

#include <iostream>
#include <iomanip>
#include <ctime>
#include <chrono>

int main () {
   using std::chrono::system_clock;
   std::time_t tt = system_clock::to_time_t (system_clock::now());

   struct std::tm * ptm = std::localtime(&tt);
   std::cout << "Now (local time): " << std::put_time(ptm,"%c") << '\n';

   return 0;
}