Biblioteca C ++ iomanip - função put_time

Descrição

Esta função acessa a sequência de saída construindo primeiro um objeto do tipo basic_ostream :: sentry. Então (se a avaliação do objeto sentry for verdadeira), ele chama time_put :: put (usando a localidade selecionada do stream) para realizar as operações de formatação e inserção, ajustando os sinalizadores de estado interno do stream de acordo. Finalmente, ele destrói o objeto sentinela antes de retornar.

É usado para inserir a representação da informação de hora e data apontada por tmb, formatando-a conforme especificado pelo argumento fmt.

Declaração

A seguir está a declaração para a função std :: put_time.

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

Parâmetros

tmb- Ponteiro para o objeto do tipo struct tm com a informação de data e hora a formatar. struct tm é uma classe definida no cabeçalho <ctime>.

fmt- C-string usado por time_put :: colocado como formato de string. Ele contém qualquer combinação de caracteres regulares e especificadores de formato especial. Esses especificadores de formato são substituídos pela função para os valores correspondentes para representar o tempo especificado em tmb.

Todos eles começam com um sinal de porcentagem (%) e são mostrados abaixo -

especificador Substituído por Exemplo
%a Nome abreviado do dia da semana * Thu
%A Nome completo do dia da semana * Thursday
%b Nome abreviado do mês * Aug
%B Nome completo do mês * August
%c Representação de data e hora * Thu Aug 23 14:55:02 2001
%C Ano dividido por 100 e truncado em um número inteiro ( 00-99) 20
%d Dia do mês, preenchido com zeros ( 01-31) 23
%D MM/DD/YYData abreviada , equivalente a%m/%d/%y 08/23/01
%e Dia do mês, preenchido com espaços ( 1-31) 23
%F YYYY-MM-DDData abreviada , equivalente a%Y-%m-%d 2001-08-23
%g Ano baseado na semana, últimos dois dígitos ( 00-99) 01
%G Ano baseado na semana 2001
%h Nome abreviado do mês * (igual a %b) Aug
%H Hora no formato 24h ( 00-23) 14
%I Hora no formato 12h ( 01-12) 02
%j Dia do ano ( 001-366) 235
%m Mês como um número decimal ( 01-12) 08
%M Minuto ( 00-59) 55
%n Caractere de nova linha ( '\n')
%p Designação AM ou PM PM
%r Relógio de 12 horas * 02:55:02 pm
%R Tempo de 24 horas HH:MM, equivalente a%H:%M 14:55
%S Segundo ( 00-61) 02
%t Caractere de tabulação horizontal ( '\t')
%T Formato de hora ISO 8601 ( HH:MM:SS), equivalente a%H:%M:%S 14:55:02
%u Dia da semana ISO 8601 como número com segunda-feira como 1( 1-7) 4
%U Número da semana com o primeiro domingo como o primeiro dia da semana um ( 00-53) 33
%V Número da semana ISO 8601 ( 00-53) 34
%w Dia da semana como um número decimal com domingo como 0( 0-6) 4
%W Número da semana com a primeira segunda-feira como o primeiro dia da semana um ( 00-53) 34
%x Representação de data * 08/23/01
%X Representação de tempo * 14:55:02
%y Ano, últimos dois dígitos ( 00-99) 01
%Y Ano 2001
%z

Deslocamento ISO 8601 de UTC no fuso horário (1 minuto = 1, 1 hora = 100)

Se o fuso horário não puder ser encerrado, nenhum caractere

+100
%Z

Nome ou abreviatura do fuso horário *

Se o fuso horário não puder ser encerrado, nenhum caractere

CDT
%% Um %sinal %

Valor de retorno

Não especificado. Esta função deve ser usada apenas como um manipulador de fluxo.

Os erros são sinalizados pela modificação dos sinalizadores de estado interno do fluxo -

bandeira erro
eofbit -
failbit A função falhou ao formatar tmb conforme especificado por fmt (também pode ser definido se a construção desentinela falhou).
badbit

A inserção no fluxo falhou ou algum outro erro aconteceu (como quando esta função captura uma exceção lançada por uma operação interna).

Quando definido, a integridade do fluxo pode ter sido afetada.

Exceções

Basic guarantee - se uma exceção for lançada, o objeto está em um estado válido.

Ele lança uma exceção de falha de tipo de membro se o sinalizador de estado de erro resultante não for goodbit e exceções de membro foram definidas para lançar para esse estado.

Qualquer exceção lançada por uma operação interna é capturada e tratada pela função, definindo badbit. Se badbit foi definido na última chamada para exceções, a função relança a exceção capturada.

Corridas de dados

Acessa o objeto apontado por tmb e a matriz apontada por fmt.

Modifica o objeto de fluxo onde está inserido.

O acesso simultâneo ao mesmo objeto de fluxo pode causar corridas de dados, exceto para os objetos de fluxo padrão (cout, cerr, clog, wcout, wcerr e wclog) quando estes são sincronizados com stdio (neste caso, nenhuma corrida de dados é iniciada, embora não as garantias são fornecidas na ordem em que os caracteres de vários threads são inseridos).

Exemplo

No exemplo a seguir, explica sobre a função 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;
}