Bonjour,
Ci-après un code qui ne fonctionne pas.
Quelqu'un pourrait-il me dire quelle erreur j'ai pu commettre?
Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }Sachant que si je remplace l'heure par une date valide et le format par %d/%m/%Y la lecture se passe parfaitement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 1970-01-01 00:00:00.000000000 erreur : 0produit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 2018-01-12 00:00:00.000000000 erreur : 1
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é.
Partager