Bibliothèque iomanip C ++ - fonction get_time

La description

Cette fonction accède à la séquence d'entrée en construisant d'abord un objet de type basic_istream :: sentry. Ensuite (si l'évaluation de l'objet sentinelle est vraie), il appelle time_get :: get (en utilisant les paramètres régionaux sélectionnés du flux) pour effectuer à la fois les opérations d'extraction et d'analyse, et ajuste les indicateurs d'état internes du flux en conséquence. Enfin, il détruit l'objet sentinelle avant de revenir.

Il est utilisé pour extraire des caractères du flux d'entrée auquel il est appliqué et les interpréter comme des informations d'heure et de date comme spécifié dans l'argument fmt. Les données obtenues sont stockées dans l'objet struct tm pointé par tmb.

Déclaration

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

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

Paramètres

tmb- Pointeur vers un objet de type struct tm où sont stockées les informations d'heure et de date extraites. struct tm est une classe définie dans l'en-tête <ctime>.

fmt- Chaîne C utilisée par time_get :: get comme chaîne de format (voir time_get :: get). charT est le type de caractère dans la chaîne C.

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 La séquence d'entrée n'a plus de caractères disponibles (fin de fichier atteinte).
échec Soit aucun caractère n'a été extrait, soit les caractères extraits n'ont pas pu être interprétés comme une valeur monétaire valide.
badbit Erreur sur le flux (par exemple lorsque cette fonction intercepte une exception levée par une opération interne). Lorsqu'elle est définie, l'intégrité du flux peut avoir été affectée.

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 au tableau pointé par fmt Modifie l'objet pointé par tmb et l'objet de flux dont il est extrait.

L'accès simultané au même objet de flux peut provoquer des courses de données, sauf pour les objets de flux standard cin et wcin lorsque ceux-ci sont synchronisés avec stdio (dans ce cas, aucune course de données n'est initiée, bien qu'aucune garantie ne soit donnée sur l'ordre dans lequel les caractères extraits sont attribués aux fils).

Exemple

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