Bibliothèque iomanip C ++ - fonction put_time

La description

Cette fonction accède à la séquence de sortie en construisant d'abord un objet de type basic_ostream :: sentry. Ensuite (si l'évaluation de l'objet sentinelle est vraie), il appelle time_put :: put (en utilisant les paramètres régionaux sélectionnés du flux) pour effectuer à la fois les opérations de formatage et d'insertion, en ajustant les indicateurs d'état internes du flux en conséquence. Enfin, il détruit l'objet sentinelle avant de revenir.

Il est utilisé pour insérer la représentation des informations d'heure et de date pointées par tmb, en les formatant comme spécifié par l'argument fmt.

Déclaration

Voici la déclaration de la fonction std :: put_time.

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

Paramètres

tmb- Pointeur vers l'objet de type struct tm avec les informations de date et d'heure à formater. struct tm est une classe définie dans l'en-tête <ctime>.

fmt- Chaîne C utilisée par time_put :: put comme chaîne de format. Il contient toute combinaison de caractères normaux et de spécificateurs de format spéciaux. Ces spécificateurs de format sont remplacés par la fonction aux valeurs correspondantes pour représenter l'heure spécifiée dans tmb.

Ils commencent tous par un signe de pourcentage (%) et sont indiqués ci-dessous -

prescripteur Remplacé par Exemple
%a Nom abrégé du jour de la semaine * Thu
%A Nom complet du jour de la semaine * Thursday
%b Nom abrégé du mois * Aug
%B Nom complet du mois * August
%c Représentation de la date et de l'heure * Thu Aug 23 14:55:02 2001
%C Année divisée par 100 et tronquée en entier ( 00-99) 20
%d Jour du mois, sans remplissage ( 01-31) 23
%D MM/DD/YYDate courte , équivalente à%m/%d/%y 08/23/01
%e Jour du mois, rembourré d'espace ( 1-31) 23
%F YYYY-MM-DDDate courte , équivalente à%Y-%m-%d 2001-08-23
%g Année basée sur la semaine, deux derniers chiffres ( 00-99) 01
%G Année basée sur la semaine 2001
%h Nom du mois abrégé * (identique à %b) Aug
%H Heure au format 24h ( 00-23) 14
%I Heure au format 12h ( 01-12) 02
%j Jour de l'année ( 001-366) 235
%m Mois sous forme de nombre décimal ( 01-12) 08
%M Minute ( 00-59) 55
%n Caractère de nouvelle ligne ( '\n')
%p Désignation AM ou PM PM
%r Horloge de 12 heures * 02:55:02 pm
%R 24 heures HH:MM, équivalent à%H:%M 14:55
%S Deuxième ( 00-61) 02
%t Caractère de tabulation horizontale ( '\t')
%T Format d'heure ISO 8601 ( HH:MM:SS), équivalent à%H:%M:%S 14:55:02
%u Jour de la semaine ISO 8601 comme nombre avec lundi comme 1( 1-7) 4
%U Numéro de semaine avec le premier dimanche comme premier jour de la première semaine ( 00-53) 33
%V Numéro de semaine ISO 8601 ( 00-53) 34
%w Jour de la semaine sous forme de nombre décimal avec dimanche sous forme de 0( 0-6) 4
%W Numéro de la semaine avec le premier lundi comme premier jour de la première semaine ( 00-53) 34
%x Représentation de la date * 08/23/01
%X Représentation du temps * 14:55:02
%y Année, deux derniers chiffres ( 00-99) 01
%Y An 2001
%z

Décalage ISO 8601 par rapport à UTC dans le fuseau horaire (1 minute = 1, 1 heure = 100)

Si le fuseau horaire ne peut pas être défini, aucun caractère

+100
%Z

Nom ou abréviation du fuseau horaire *

Si le fuseau horaire ne peut pas être défini, aucun caractère

CDT
%% Un %signe %

Valeur de retour

Non spécifié. Cette fonction ne doit être utilisée que comme manipulateur de flux.

Les erreurs sont signalées en modifiant les indicateurs d'état internes du flux -

drapeau Erreur
eofbit -
échec La fonction n'a pas pu formater tmb comme spécifié par fmt (elle peut également être définie si la construction desentinelle échoué).
badbit

Soit l'insertion sur le flux a échoué, soit une autre erreur s'est produite (par exemple lorsque cette fonction intercepte une exception levée par une opération interne).

Lorsqu'il est défini, l'intégrité du flux peut avoir été affectée.

Des exceptions

Basic guarantee - si une exception est levée, l'objet est dans un état valide.

Il lève une exception d'échec de type de membre si l'indicateur d'état d'erreur résultant n'est pas goodbit et que les exceptions de membre ont été définies pour être levées pour cet état.

Toute exception levée par une opération interne est interceptée et gérée par la fonction, définissant badbit. Si badbit a été défini lors du dernier appel aux exceptions, la fonction relance l'exception interceptée.

Courses de données

Accède à l'objet pointé par tmb et au tableau pointé par fmt.

Modifie l'objet de flux dans lequel il est inséré.

L'accès simultané au même objet de flux peut provoquer des courses de données, sauf pour les objets de flux standard (cout, cerr, clog, wcout, wcerr et wclog) lorsque ceux-ci sont synchronisés avec stdio (dans ce cas, aucune course de données n'est lancée, bien que non des garanties sont données sur l'ordre dans lequel les caractères de plusieurs threads sont insérés).

Exemple

L'exemple ci-dessous explique la fonction 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;
}