2012-03-18 15 views
1

Quelqu'un peut-il me dire comment afficher en temps réel en C++? ce que je veux dire est que si le programme est en cours d'exécution, vous pouvez voir les secondes et ou minutes décompter comme une véritable horloge accrochée au murComment afficher en temps réel en C++

c'est ce que j'ai:

int main() 
{ 
    time_t rawtime; //creates and object of the built in time function 
    struct tm * timeinfo; //no idea what this do 

    time (&rawtime); //gets the time from the computer 
    timeinfo = localtime (&rawtime); //store that time here 

    //it displays current date and time except time is frozen and not real time 
    cout<< "Current local time and date: "<<asctime (timeinfo)<< endl; 


    system("pause"); 
    return 0; 

} 
+0

En outre: vous pouvez utiliser les classes de temps de C++ 11. Plus un commentaire - utilisez une façon de mettre des espaces dans votre code (je conseille: espace avant et après chaque opérateur, sauf '&' utilisé comme "adresse de", pas d'espace après et avant les parenthèses - mais c'est purement individuel. continuer à utiliser un style cohérent). – Griwes

Répondre

3

Non en C++ (dans C/Win32) mais fonctionne.

#include <stdio.h> 
#include <windows.h> 


int _tmain(int argc, _TCHAR* argv[]) 
{ 
    SYSTEMTIME stime; //structure to store system time (in usual time format) 
    FILETIME ltime;  //structure to store local time (local time in 64 bits) 
    FILETIME ftTimeStamp; 
    char TimeStamp[256];//to store TimeStamp information 
    while (true){ 
    ////Prepare data needed to output the time stamp: 
    GetSystemTimeAsFileTime(&ftTimeStamp); // Gets the current system time 
    FileTimeToLocalFileTime (&ftTimeStamp,&ltime);//convert in local time and store in ltime 
    FileTimeToSystemTime(&ltime,&stime);//convert in system time and store in stime 

    sprintf(TimeStamp, "%d:%d:%d, %d.%d.%d \r",stime.wHour,stime.wMinute,stime.wSecond, stime.wDay,stime.wMonth,stime.wYear); 
    printf(TimeStamp); 

    Sleep(1000); 
    } 

    system("pause"); 
    return 0; 
} 
1

Certains C de base ++ viendra dans un long chemin: www.cplusplus.com

int main() 
{ 
    time_t rawtime; //creates and object of the built in time function 
    struct tm * timeinfo; //no idea what this do 

    while (true) 
    { 
     time(&rawtime); //gets the time from the computer 
     timeinfo = localtime(&rawtime); //store that time here 

     //it displays current date and time except time is frozen and not real time 
     cout<< "Current local time and date: "<<asctime (timeinfo)<< endl; 

     sleep(1000); //1 second sleep 
    } 
    system("pause"); 
    return 0; 
} 
+4

Non, non, non, et une fois de plus: non! N'utilisez pas www.cplusplus.com, utilisez cppreference.com comme référence et un bon livre comme outil d'apprentissage, mais n'apprenez jamais rien de cplusplus.com, qui est connu comme l'un des pires sites possibles pour apprendre quoi que ce soit. – Griwes

+0

Ok @PoweRoy qui fonctionne, sauf qu'il ne cesse de réécrire le temps comment puis-je l'obtenir pour faire tout cela dans une ligne .. s'il vous plaît? J'espère que je ne demande pas trop –

+1

@Griwes - Je n'ai pas été là-bas, mais je pourrais faire avec remonter le moral. Y a-t-il une section particulière de ce site dont je pourrais rire? –

1

Essayez ceci:

while (true) { 
    std::cout << '\r'; // return to the beginning of the line 
    getAndPrintTime(); // do what you do now, but don't write endl 
} 

En supposant que vous voulez continuer à remplacer le même emplacement dans le terminal, deux choses simples à utiliser sont '\ r' pour le retour chariot et '\ b' pour le retour arrière (si vous voulez sauvegarder un caractère plutôt qu'une ligne entière).

+0

Vous devez probablement vider 'cout'. Et un «sommeil» serait agréable pour éviter de monopoliser le processeur. – interjay

+0

Je ne comprends pas ... où devrait cette boucle tout aller –

+0

Le retour ne fonctionne pas –

0

Le langage C++ standard n'avait aucune notion de temps avant le dernier standard C++ 11 publié en 2011, et rarement implémenté. Sous Linux, vous pourriez envisager d'utiliser GCC 4.6 ou 4.7 qui en implémente la majeure partie.

(ancien C++ 03 vous donne <ctime>)

Sinon, le temps est donnée par système d'exploitation spécifique des bibliothèques et des appels système (tels que gettimeofday et clock_gettime sur Linux et Posix)

Si vous avoir une implémentation conforme au C++ 11 de la dernière norme C++ (ce qui peut être improbable, en particulier sous Windows), vous pouvez utiliser l'en-tête standard <chrono>.

+0

non je n'ai pas ce nouveau logiciel ..j'espérais qu'il y a un autre moyen de contourner ce problème –

+0

Sur Windows ou sur n'importe quel système sans le dernier C++ 11 '', vous devez utiliser des fonctions * spécifiques au système * pour interroger l'heure. Et vous n'avez mentionné aucun système d'exploitation dans votre question! –

+0

windows is my os –