程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 一個計時器的實現

一個計時器的實現

編輯:關於C

 

直接上代碼

定義頭文件:

 

//: C09:Cpptime.h 

// From Thinking in C++, 2nd Edition 

// Available at http://www.BruceEckel.com 

// (c) Bruce Eckel 2000 

// Copyright notice in Copyright.txt 

// A simple time class 

#ifndef CPPTIME_H 

#define CPPTIME_H 

#include <ctime> 

#include <cstring> 

 

class Time { 

    time_t t; 

    tm local; 

    char asciiRep[26]; 

    unsigned char lflag, aflag; 

    void updateLocal() { 

        if(!lflag) { 

            local = *localtime(&t); 

            lflag++; 

        } 

    } 

    void updateAscii() { 

        if(!aflag) { 

            updateLocal(); 

            strcpy(asciiRep,asctime(&local)); 

            aflag++; 

        } 

    } 

public: 

    Time() { mark(); } 

    void mark() { 

        lflag = aflag = 0; 

        time(&t); 

    } 

    const char* ascii() { 

        updateAscii(); 

        return asciiRep; 

    } 

    // Difference in seconds: 

    int delta(Time* dt) const { 

        return int(difftime(t, dt->t)); 

    } 

    int daylightSavings() { 

        updateLocal(); 

        return local.tm_isdst; 

    } 

    int dayOfYear() { // Since January 1 

        updateLocal(); 

        return local.tm_yday; 

    } 

    int dayOfWeek() { // Since Sunday 

        updateLocal(); 

        return local.tm_wday; 

    } 

    int since1900() { // Years since 1900 

        updateLocal(); 

        return local.tm_year; 

    } 

    int month() { // Since January 

        updateLocal(); 

        return local.tm_mon; 

    } 

    int dayOfMonth() { 

        updateLocal(); 

        return local.tm_mday; 

    } 

    int hour() { // Since midnight, 24-hour clock 

        updateLocal(); 

        return local.tm_hour; 

    } 

    int minute() { 

        updateLocal(); 

        return local.tm_min; 

    } 

    int second() { 

        updateLocal(); 

        return local.tm_sec; 

    } 

}; 

#endif // CPPTIME_H ///:~ 

使用示例:

 

//: C09:Cpptime.cpp 

// From Thinking in C++, 2nd Edition 

// Available at http://www.BruceEckel.com 

// (c) Bruce Eckel 2000 

// Copyright notice in Copyright.txt 

// Testing a simple time class 

#include "head.h" 

#include <iostream> 

using namespace std; 

 

int main() { 

    Time start; 

    for(int i = 1; i < 1000; i++) { 

        cout << i << ' '; 

        if(i%10 == 0) cout << endl; 

    } 

    Time end; 

    cout << endl; 

    cout << "start = " << start.ascii(); 

    cout << "end = " << end.ascii(); 

    cout << "delta = " << end.delta(&start); 

} ///:~   

 

摘自 yucan1001

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved