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/YY Data abreviada , equivalente a%m/%d/%y |
08/23/01 |
%e |
Dia do mês, preenchido com espaços ( 1-31 ) |
23 |
%F |
YYYY-MM-DD Data 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;
}