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 703 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 1 mars 2023 - 15 mai 2016 à 14:35
Dalfab Messages postés 703 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 1 mars 2023 - 15 mai 2016 à 14:35
A voir également:
- Inserer une Date
- Iphone 14 date de sortie - Guide
- Insérer liste déroulante excel - Guide
- Insérer signature word - Guide
- Whatsapp date incorrecte ✓ - Forum Mobile
- Insérer sommaire word - Guide
1 réponse
Dalfab
Messages postés
703
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
1 mars 2023
100
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 );
}