Bonjour,

Ci-après un code qui ne fonctionne pas.
Quelqu'un pourrait-il me dire quelle erreur j'ai pu commettre?
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);
}
Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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);
produit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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é.