一个c++写的毫秒级计数器

来源:互联网 发布:js null if 编辑:程序博客网 时间:2024/06/06 02:03

 

#include <ctime>
#include
<iostream>
using namespace std;
 
class  ghhTimer
 
{
 
public:
     ghhTimer();
     
bool Start(void); 
     
bool Stop(void);    
     
bool Pause(void);
    size_t GetSeconds(
voidconst;
    size_t GetMiliSeconds(
voidconst;
private:
     
enum {run = 1, stop, pause} _Status;
    time_t _Clock;
     time_t _TotalClocks;
 }
;
  
// 构造函数,设置初始状态
  ghhTimer::ghhTimer() : _Status(stop), _Clock(0), _TotalClocks(0)
  
{
 }

 
 
// 当表已经停止或者暂停时启动停表,成功返回true,否则返回false
 bool ghhTimer::Start(void)
 
{
     
switch (_Status)
     
{
    
case stop :
         _TotalClocks 
= 0;
        _Clock 
= clock();
          
break;
 
     
case pause :
          _Clock 
= clock();
         
break;
  
     
case run :
          
break;

    
default :
          
return false;
      }

  
     _Status 
= run;
  
      
return true;
  }

 
 
// 表运行时暂停计时,成功返回true,否则返回false
 bool ghhTimer::Pause(void)
 
{
      
switch (_Status)
     
{
     
case stop :
      
case pause :
          
break;
 
     
case run :
        _TotalClocks 
+= (clock() - _Clock);
          _Clock 
= 0;
         _Status 
= pause;
          
break;
  
     
default :
          
return false;
     }

  
      
return true;
 }


 
// 表运行或暂停时停止计时
 bool ghhTimer::Stop(void)
 
{
      
switch (_Status)
     
{
    
case stop :
     
case pause :
          
break;
         
     
case run :
          _TotalClocks 
+=(clock() - _Clock);
         _Clock 
= 0;
          
break;
 
      
default :
         
return false;
     }

 
     _Status 
= stop;
     
      
return true;
 }

 
 
// 得到当前积累的秒数
 size_t ghhTimer::GetSeconds(voidconst
 
{
     time_t Clocks;
 
     
switch (_Status)
     
{
     
case stop:
     
case pause:
         Clocks 
= _TotalClocks;
         
break;
 
     
case run:
        Clocks 
= _TotalClocks + clock() - _Clock;
        
break;
 
    
default:
         
return false;
    }

     
return (Clocks / CLOCKS_PER_SEC);
 }

 
 
// 得到当前积累的毫秒数
 size_t ghhTimer::GetMiliSeconds(voidconst
 
{
    time_t Clocks;
 
     
switch(_Status)
     
{
     
case stop:
     
case pause:
         Clocks 
= _TotalClocks;
         
break;
     
case run:
         Clocks 
= _TotalClocks + clock() - _Clock;
         
break;

     
default:
        
return false;
    }

     
return (Clocks * 1000 / CLOCKS_PER_SEC);
 }
原创粉丝点击