Bonjour,
Bon je n'ai pas troué de réponse claire sur le net, donc je tente ici.
Mon besoin :
il s'agit de faire un programme qui traite des echantillons issue de test de charge, chaques echantillons est lié à une heure à la millisecond. je dois convertir cette heure (genre "15:32:12,500") en timestamp, afin de la soustraire au timestamps initial de début de test.
J'ai déjà réaliser ce programme en VBscript malheureusement, ayant plusieur milliers d'échantillons (voir millions dans certains cas) je dois trouvé le moyen d'optimiser le temps de traitement, du coup je suis repassé sur le C++ qui est plus performant que le vbscript.
j'ai quasiment fini le programme mais ... je suis confronté a un probléme qui m'est étrange :
je convertit mon time stamp en double afin de faire la soustraction, puis je dois l'insérer dans mon fichier, mais je récupére toujours 0 ???!!!!!
du coup un peu d'aide serait le bienvenue car j'ai fouillé le net et malgrés les réponses donné je n'arrive pas résoudre mon probléme.
donc voici mon code (simplifié je vais pas tout mettre il fait plusieur page) :
donc en gros si mes paramétres son "12:53:12,500 12:53:12,650 12:53:13,000" j'aimerais que mon programme m'affiche :
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 #include <iostream> #include <string> #include <regex> #include <fstream> #include <sstream> #include <time.h> #include <vector> #include <stdio.h> #include <stdlib.h> #include <iomanip> using namespace std; vector<string> explode(const string& str, const char& ch) { string next; vector<string> result; for (string::const_iterator it = str.begin(); it != str.end(); it++) { if (*it == ch) { if (!next.empty()) { result.push_back(next); next.clear(); } } else { next += *it; } } if (!next.empty()) result.push_back(next); return result; } double DateToTimeStamp(string date){ string Millisecond = date.substr(date.rfind(","),date.size()-date.rfind(",")); std::vector<std::string> MyTime = explode(date.substr(0,date.rfind(",")), ':'); time_t now = time(NULL); struct tm * tmdate = localtime(&now); tmdate->tm_hour = atoi(MyTime[0].c_str()); tmdate->tm_min = atoi(MyTime[1].c_str()); tmdate->tm_sec = atoi(MyTime[2].c_str()); now = mktime(tmdate); std::ostringstream strs; strs << static_cast<double> (now) << Millisecond; string test = strs.str(); return atof(test.c_str()); } int main(int argc, char *argv[]) { double Decal = 0; for(int n=1; n<argc; n++){ string heure = argc[n]; if(Decal==0) Decal=DateToTimeStamp(heure); cout << DateToTimeStamp(result[a])-Decal << endl; } }
0
150
500
Qqun a t'il une idée ?
Partager