Standarden C + + -bibliotek innehåller ett antal funktioner och strukturer för att hjälpa programmerare att hantera tid i sina ansökningar . I den här guiden kommer du att skapa en C + + klass som kallas klocka som kommer att fungera som en enkel wrapper runt time_t och tm strukturer som används av C : s tid bibliotek , och inkluderar ett enkelt prov program som kommer att använda den här klockan klassen att mata systemet tid till konsolen . Saker du behöver
C + + kompilator
C + + Standard Library
textredigerare eller C + + IDE
Visa fler instruktioner
1
Skapa dina filer . Detta program kommer att kräva tre filer : en clock.h headerfil att definiera Clock klassen , en clock.cpp C + + källfilen att definiera genomförandet av klockan klassen , och slutligen ett enkelt exempel program med denna klass i main.cpp .
2
Definiera klockan klassen . Öppna clock.h sidhuvudfilen och definiera strukturen på klockan klassen genom att ange följande kod i det
# ifndef _CLOCK_H # define _CLOCK_H
Clock
class {public : . Int getHours ( ) , int getMinutes (); int getSeconds ();
std :: string getTime ( ) ;
Clock ( ) , privat : } ;
# endif /* _CLOCK_H * /
klassen har definierats som att ha fyra stora funktioner ( förutom konstruktorn Clock ( ) ) . De getHours , getMinutes och getSeconds funktioner kommer varje hämta en annan del av tiden från C + + standard tid bibliotek , med det nuvarande systemet tid som sin guide . Den getTime ( ) funktionen kommer att formatera dessa i en vanlig HH : MM : . SS sträng , som ni är vana att se på digitala klockor
ifndef , definiera , och endif taggar är frivilligt, men det är en god praxis för att komma in i att använda dessa . Vid byggnation av större projekt , inklusive dessa taggar kommer att säkerställa att en viss header fil läses in i minnet endast en gång . Detta minskar risken för cirkulära beroendet fel , och göra en vana att alltid ta med dem i nya header-filer nu kommer att spara mycket huvudbry senare på väg .
3
Implementera klockan klassen . Öppna din clock.cpp fil , och genomföra alla de funktioner som du har definierat i din header -filen genom att ange följande :
# include # include # include " klocka. h "
Klocka :: Klocka ( ) { }
int Klocka :: getHours ( ) { time_t sekunder = tid ( NULL ) ; struct tm * timeinfo = localtime ( & sekunder ) ; retur timeinfo - > tm_hour ;}
int Klocka :: getMinutes ( ) { time_t sekunder = tid ( NULL ) ; struct tm * timeinfo = localtime ( & sekunder ) , avkastning timeinfo - > tm_min ,
}
int Klocka :: getSeconds ( ) { time_t sekunder = tid ( NULL ) ; struct tm * timeinfo = localtime ( & sekunder ) , avkastning timeinfo - > tm_sec ,
}
std :: string Klocka :: getTime ( ) { std :: string tid , std :: stringstream ut , ut << getHours ( ) , tid = out.str ( ) ; out.str ( " " ) , tid + = " : " ; ut << getMinutes ( ) , tid + = out.str ( ) ; out.str ( " " ) , tid + = " : " ; ut << getSeconds ( ) , tid + = out.str ( ) , retur tid ,
}
Börjar på toppen är konstruktören , Klocka ( ) . Detta är en mycket enkel klass , så det finns ingen anledning att göra något speciellt här , så att konstruktören lämnas tomt .
Nästa är getHours , minuter och sekunder funktioner . Dessa funktioner hämta lokal tid , mätt i sekunder , GMT , sedan januari 1970 på de flesta datorer , omvandlar den till TM struktur tillhandahålls av C + +- bibliotek , och slutligen hämtar de timmar, minuter och sekunder av detta värde i en människa läsbar form .
Slutligen sätter getTime dessa värden tillsammans i en sträng med den gemensamma format som skiljer timmar, minuter och sekunder med kolon .
4
Skapa ett enkelt program att använda den. Öppna din main.cpp filen och skriver följande program i den.
# Include # include " clock.h "
int main ( int argc , char * const argv [ ,"] ) { klocka * klocka = ny klocka ( ) , std :: cout << clock- > getTime ( ) , avkastning 0; }
Detta mycket enkla program skapar en ny klocka objekt , får aktuell systemtid från den, och matar ut den till den standard ut . Slutligen returnerar 0 till operativsystemet , för att informera operativsystemet att programmet flöt smidigt utan fel .