Biblioteca C ++ iomanip - função get_time

Descrição

Esta função acessa a sequência de entrada construindo primeiro um objeto do tipo basic_istream :: sentry. Então (se a avaliação do objeto sentry for verdadeira), ele chama time_get :: get (usando o local selecionado do stream) para realizar as operações de extração e análise e ajusta os sinalizadores de estado interno do stream de acordo. Finalmente, ele destrói o objeto sentinela antes de retornar.

É usado para extrair caracteres do fluxo de entrada ao qual é aplicado e os interpreta como informações de hora e data, conforme especificado no argumento fmt. Os dados obtidos são armazenados no objeto struct tm apontado por tmb.

Declaração

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

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

Parâmetros

tmb- Ponteiro para um objeto do tipo struct tm onde são armazenadas as informações de hora e data extraídas. struct tm é uma classe definida no cabeçalho <ctime>.

fmt- C-string usado por time_get :: get como string de formato (veja time_get :: get). charT é o tipo de caractere na string C.

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 A seqüência de entrada não tem mais caracteres disponíveis (final do arquivo atingido).
failbit Nenhum caractere foi extraído ou os caracteres extraídos não puderam ser interpretados como um valor monetário válido.
badbit Erro no fluxo (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 array apontado por fmt Modifica o objeto apontado por tmb e o objeto stream do qual ele é extraído.

O acesso simultâneo ao mesmo objeto de fluxo pode causar corridas de dados, exceto para os objetos de fluxo padrão cin e wcin quando estes são sincronizados com stdio (neste caso, nenhuma corrida de dados é iniciada, embora nenhuma garantia seja dada na ordem em que os caracteres extraídos são atribuídos a tópicos).

Exemplo

No exemplo abaixo, explica sobre a função get_time.

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

int main () {
   struct std::tm when;
   std::cout << "Please, enter the time: ";
   std::cin >> std::get_time(&when,"%R");   

   if (std::cin.fail()) std::cout << "Error reading time\n";
   else {
      std::cout << "The time entered is: ";
      std::cout << when.tm_hour << " hours and " << when.tm_min << " minutes\n";
   }
   return 0;
}