Libreria iomanip C ++ - funzione put_time

Descrizione

Questa funzione accede alla sequenza di output costruendo prima un oggetto di tipo basic_ostream :: sentry. Quindi (se la valutazione dell'oggetto sentry è vera), chiama time_put :: put (utilizzando la locale selezionata dello stream) per eseguire sia la formattazione che le operazioni di inserimento, regolando di conseguenza i flag di stato interni dello stream. Infine, distrugge l'oggetto sentinella prima di tornare.

Serve per inserire la rappresentazione delle informazioni di data e ora puntate da tmb, formattandole come specificato dall'argomento fmt.

Dichiarazione

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

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

Parametri

tmb- Puntatore all'oggetto di tipo struct tm con le informazioni su data e ora da formattare. struct tm è una classe definita nell'intestazione <ctime>.

fmt- Stringa C usata da time_put :: put come stringa di formato. Contiene qualsiasi combinazione di caratteri regolari e specificatori di formato speciali. Questi specificatori di formato vengono sostituiti dalla funzione ai valori corrispondenti per rappresentare l'ora specificata in tmb.

Iniziano tutti con un segno di percentuale (%) e sono mostrati di seguito:

specificatore Sostituito da Esempio
%a Nome abbreviato del giorno della settimana * Thu
%A Nome completo del giorno della settimana * Thursday
%b Nome del mese abbreviato * Aug
%B Nome completo del mese * August
%c Rappresentazione di data e ora * Thu Aug 23 14:55:02 2001
%C Anno diviso per 100 e troncato a intero ( 00-99) 20
%d Giorno del mese, con riempimento zero ( 01-31) 23
%D MM/DD/YYData breve , equivalente a%m/%d/%y 08/23/01
%e Giorno del mese, spazio riempito ( 1-31) 23
%F YYYY-MM-DDData breve , equivalente a%Y-%m-%d 2001-08-23
%g Anno basato sulla settimana, ultime due cifre ( 00-99) 01
%G Anno su base settimanale 2001
%h Nome del mese abbreviato * (uguale a %b) Aug
%H Ora in formato 24 ore ( 00-23) 14
%I Ora in formato 12 ore ( 01-12) 02
%j Giorno dell'anno ( 001-366) 235
%m Mese come numero decimale ( 01-12) 08
%M Minuto ( 00-59) 55
%n Carattere di nuova riga ( '\n')
%p Designazione AM o PM PM
%r 12 ore dell'orologio * 02:55:02 pm
%R 24 ore HH:MM, equivalente a%H:%M 14:55
%S Secondo ( 00-61) 02
%t Carattere di tabulazione orizzontale ( '\t')
%T Formato ora ISO 8601 ( HH:MM:SS), equivalente a%H:%M:%S 14:55:02
%u ISO 8601 giorno della settimana come numero con lunedì come 1( 1-7) 4
%U Numero della settimana con la prima domenica come primo giorno della prima settimana ( 00-53) 33
%V Numero settimana ISO 8601 ( 00-53) 34
%w Giorno della settimana come numero decimale con domenica come 0( 0-6) 4
%W Numero della settimana con il primo lunedì come primo giorno della prima settimana ( 00-53) 34
%x Rappresentazione della data * 08/23/01
%X Rappresentazione del tempo * 14:55:02
%y Anno, ultime due cifre ( 00-99) 01
%Y Anno 2001
%z

Differenza ISO 8601 dall'UTC nel fuso orario (1 minuto = 1, 1 ora = 100)

Se non è possibile terminare il fuso orario, nessun carattere

+100
%Z

Nome o abbreviazione del fuso orario *

Se non è possibile terminare il fuso orario, nessun carattere

CDT
%% Un %segno %

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 -
failbit La funzione non è riuscita a formattare tmb come specificato da fmt (può anche essere impostato se la costruzione disentinella fallito).
badbit

O l'inserimento nello stream non è riuscito o si è verificato un altro errore (come quando questa funzione rileva un'eccezione generata da un'operazione interna).

Quando 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'oggetto puntato da tmb e all'array puntato da fmt.

Modifica l'oggetto stream in cui è inserito.

L'accesso simultaneo allo stesso oggetto stream può causare gare di dati, ad eccezione degli oggetti stream standard (cout, cerr, clog, wcout, wcerr e wclog) quando questi sono sincronizzati con stdio (in questo caso, non vengono avviate gare di dati, sebbene non vengono fornite garanzie sull'ordine in cui vengono inseriti i caratteri di più thread).

Esempio

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