std:: get_time
| 
           
           Défini dans l'en-tête
            
         
            
             <iomanip>
            
           
           | 
         ||
| 
           
           
            
             template
            
            
             <
            
            
             class
            
            CharT
            
             >
            
             
         /*unspecified*/ get_time ( std:: tm * tmb, const CharT * fmt ) ;  | 
         (depuis C++11) | |
Lorsqu'il est utilisé dans une expression in >> get_time ( tmb, fmt ) , il analyse l'entrée de caractères comme une valeur de date/heure selon la chaîne de format fmt conformément au facet std::time_get de la locale actuellement imbriquée dans le flux d'entrée in . La valeur résultante est stockée dans un objet std::tm pointé par tmb .
         Table des matières | 
       
Paramètres
| tmb | - | pointeur valide vers l'objet std::tm où le résultat sera stocké | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - | 
         pointer to a null-terminated
         
          CharT
         
         string specifying the conversion format
         
          La chaîne de format est constituée de zéro ou plusieurs spécificateurs de conversion, de caractères d'espacement et de caractères ordinaires (à l'exception de
           
 
          Note :
           
            | 
       |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Valeur de retour
Un objet de type non spécifié tel que
- 
        si
        
         
          in
         
        
        est un objet de type
        
         
          
           
            std::
            
             basic_istream
            
           
          
          
           <
          
          CharT, Traits
          
           >
          
         
        
        , l'expression
        
         
          in
          
           >>
          
          get_time
          
           (
          
          tmb, fmt
          
           )
          
         
        
        
- a pour type std:: basic_istream < CharT, Traits > &
 - a pour valeur in
 - se comporte comme si elle appelait f ( in, tmb, fmt )
 
 
où la fonction f est définie comme :
template<class CharT, class Traits> void f(std::basic_ios<CharT, Traits>& str, std::tm* tmb, const CharT* fmt) { using Iter = std::istreambuf_iterator<CharT, Traits>; using TimeGet = time_get<CharT, Iter>; std::ios_base::iostate err = std::ios_base::goodbit; const TimeGet& tg = std::use_facet<TimeGet>(str.getloc()); tg.get(Iter(str.rdbuf()), Iter(), str, err, tmb, fmt, fmt + Traits::length(fmt)); if (err != std::ios_base::goodbit) str.setstate(err); }
` et contient des termes spécifiques au C++ qui doivent être préservés. Seul le texte environnant aurait été traduit, mais dans ce cas, il n'y a pas de texte à traduire en dehors du code.
Notes
       Comme spécifié dans
       
        
         std::time_get::do_get
        
       
       , que cette fonction appelle, il n'est pas spécifié si cette fonction remet à zéro les champs dans
       
        
         
          *
         
         tmb
        
       
       qui ne sont pas définis directement par les spécificateurs de conversion apparaissant dans
       
        
         fmt
        
       
       : les programmes portables doivent initialiser tous les champs de
       
        
         
          *
         
         tmb
        
       
       à zéro avant d'appeler
       
        std::get_time
       
       .
      
Exemple
Remarque : choisissez clang ou gcc >= 12.1 pour observer le résultat. libstdc++ avant la version 12.1 n'implémente pas correctement le % b spécificateur : bug #78714 .
#include <iomanip> #include <iostream> #include <locale> #include <sstream> int main() { std::tm t = {}; std::istringstream ss("2011-Februar-18 23:12:34"); ss.imbue(std::locale("de_DE.utf-8")); ss >> std::get_time(&t, "%Y-%b-%d %H:%M:%S"); if (ss.fail()) std::cout << "Parse failed\n"; else std::cout << std::put_time(&t, "%c") << '\n'; }
Résultat possible :
Sun Feb 18 23:12:34 2011
Voir aussi
| 
         analyse les valeurs de temps/date d'une séquence de caractères d'entrée vers
         
          
           std::tm
          
         
          (modèle de classe)  | 
       |
| 
          
           
            
             
              (C++11)
             
            
           
           
          | 
        
         formate et sort une valeur de date/heure selon le format spécifié
          (modèle de fonction)  | 
       
| 
          
           
            
             
              (C++20)
             
            
           
           
          | 
        
         analyse un objet
         
          chrono
         
         depuis un flux
         (modèle de fonction)  |