Utilisation de Date.h (Howard E. Hinnant)
Bonjour,
Ci-après un code qui ne fonctionne pas.
Quelqu'un pourrait-il me dire quelle erreur j'ai pu commettre?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
#include <iostream>
#include <sstream>
#include "date.h"
int main(int, char *[])
{
string st("12:30:15.50)))"); // L'essai avec . ou , comme séparateur décimal de la seconde ne change rien. La suppression de la partie décimale non plus.
std::istringstream strs(st);
bool test = strs.operator bool(); // --> renvoie true dans test
std::chrono::system_clock::time_point tps;
date::from_stream(strs,"%T",tps); // --> met le istream en erreur...
test = strs.operator bool(); // --> renvoie false dans test
date::to_stream(std::cout,"%F %T",tps);
std::cout << std::endl << "erreur : " << test;
exit (0);
} |
Résultat :
Code:
1 2
| 1970-01-01 00:00:00.000000000
erreur : 0 |
Sachant que si je remplace l'heure par une date valide et le format par %d/%m/%Y la lecture se passe parfaitement :
Code:
1 2 3 4 5 6 7 8 9
| string st("12/01/2018)))");
std::istringstream strs(st);
bool test = strs.operator bool();
std::chrono::system_clock::time_point tps;
date::from_stream(strs,"%d/%m/%Y",tps);
test = strs.operator bool();
date::to_stream(std::cout,"%F %T",tps);
std::cout << std::endl << "failbit : " << test;
exit (0); |
produit :
Code:
1 2
| 2018-01-12 00:00:00.000000000
erreur : 1 |
J'ai également joué un peu avec les valeurs de l'heure à saisir (autre séparateur décimal, sans décimales ...), remplacé le format par son équivalent (%H%M%S) sans succès.
Je travaille avec QT Creator 4.7.2 / QT 5.10 / MinGW32 (préinstallé) en mode c++17.
Par avance merci à tous ceux qui voudront bien m'aider :)
A bientôt
Marc
P.S. Désolé j'ai massacré le nom de l'auteur. Corrigé.