Inserer une Date
Fermé
Enelu
Messages postés
26
Date d'inscription
mardi 19 avril 2016
Statut
Membre
Dernière intervention
2 septembre 2016
-
14 mai 2016 à 22:43
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 15 mai 2016 à 14:35
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 15 mai 2016 à 14:35
A voir également:
- Inserer une Date
- Insérer une vidéo dans powerpoint - Guide
- Insérer signature word - Guide
- Insérer liste déroulante excel - Guide
- Insérer sommaire word - Guide
- Insérer filigrane word - Guide
1 réponse
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
15 mai 2016 à 14:35
15 mai 2016 à 14:35
Bonjour,
Il faut parcourir la chaîne pour extraire les champs attendus.
Il y a de nombreuses méthodes :
Le spliter peut être trouvé, mais il s'écrit rapidement
On peut faire
Il faut parcourir la chaîne pour extraire les champs attendus.
Il y a de nombreuses méthodes :
- par les expressions régulières
- en utilisant un 'splitter' qui ici va chercher le séparateur '.'
- en itérant dans un std::istringstream
- le sscanf du langage C (c'est mal mais rapide en faisant std::sscanf(str.c_str(),"%u.%u.%u",&jour,&mois,&annee))
- et j'en oublie surement
Le spliter peut être trouvé, mais il s'écrit rapidement
std::vector<std::string> split( const std::string& str , const std::string& tok ) { std::vector<std::string> result; for ( int pos = 0 ; ; ) { std::size_t pos2 = str.find_first_of( tok.c_str() , pos ); if ( pos2 == std::string::npos ) { result.push_back( str.substr( pos ) ); // empiler le dernier mot break; } result.push_back( str.substr( pos , pos2 - pos ) ); // empiler le mot extrait pos = pos2 + tok.length(); // debut du suivant } return result; }On a alors une liste de chaînes qu'il reste à convertir en entier.
On peut faire
std::vector<std::string> vst = split("15.05.2016", "."); if ( vst.size()==3) { int jour = std::strtol( vst[0].c_str() , 0 , 10 ); int mois = std::strtol( vst[1].c_str() , 0 , 10 ); int annee = std::strtol( vst[2].c_str() , 0 , 10 ); }