Libreria iomanip C ++ - funzione get_time

Descrizione

Questa funzione accede alla sequenza di input costruendo prima un oggetto di tipo basic_istream :: sentry. Quindi (se la valutazione dell'oggetto sentry è vera), chiama time_get :: get (utilizzando la locale selezionata del flusso) per eseguire sia l'estrazione che le operazioni di analisi e regola di conseguenza i flag di stato interni del flusso. Infine, distrugge l'oggetto sentinella prima di tornare.

Viene utilizzato per estrarre caratteri dal flusso di input a cui è applicato e li interpreta come informazioni su data e ora come specificato nell'argomento fmt. I dati ottenuti vengono memorizzati nell'oggetto struct tm puntato da tmb.

Dichiarazione

Di seguito è riportata la dichiarazione per la funzione std :: get_time.

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

Parametri

tmb- Puntatore a un oggetto di tipo struct tm in cui sono memorizzate le informazioni di data e ora estratte. struct tm è una classe definita nell'intestazione <ctime>.

fmt- Stringa C usata da time_get :: get come stringa di formato (vedere time_get :: get). charT è il tipo di carattere nella stringa c.

Valore di ritorno

Non specificato. Questa funzione deve essere utilizzata solo come manipolatore di flusso.

Gli errori vengono segnalati modificando i flag di stato interni del flusso -

bandiera errore
eofbit La sequenza di input non ha più caratteri disponibili (è stata raggiunta la fine del file).
failbit O nessun carattere è stato estratto oppure i caratteri estratti non possono essere interpretati come un valore monetario valido.
badbit Errore nel flusso (come quando questa funzione rileva un'eccezione generata da un'operazione interna). Se impostato, l'integrità del flusso potrebbe essere stata influenzata.

Eccezioni

Basic guarantee - se viene generata un'eccezione, l'oggetto è in uno stato valido.

Genera un'eccezione di errore del tipo di membro se il flag di stato dell'errore risultante non è goodbit e le eccezioni dei membri sono state impostate da lanciare per quello stato.

Qualsiasi eccezione generata da un'operazione interna viene rilevata e gestita dalla funzione, impostando badbit. Se il badbit è stato impostato nell'ultima chiamata alle eccezioni, la funzione rigira l'eccezione rilevata.

Gare di dati

Accede all'array puntato da fmt Modifica l'oggetto puntato da tmb e l'oggetto stream da cui viene estratto.

L'accesso simultaneo allo stesso oggetto stream può causare gare di dati, ad eccezione degli oggetti stream standard cin e wcin quando questi sono sincronizzati con stdio (in questo caso, non vengono avviate gare di dati, sebbene non sia data alcuna garanzia sull'ordine in cui i caratteri estratti sono attribuiti ai thread).

Esempio

Nell'esempio seguente viene illustrata la funzione 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;
}