smakowy155 utworzono 17 grudnia 2010 utworzono 17 grudnia 2010 Mam problem, bo nie wiem jak korzystać z biblioteki ctime. Nie mogłem nigdzie znaleść przykładów. Otóż chodzi mi o to, żeby na przykład wyświetlić aktualna godzinę i żeby odliczał czas. Nie chodzi mi o jakiegoś gotowca tylko jak to się robi.
wojtex5 komentarz 17 grudnia 2010 komentarz 17 grudnia 2010 (edytowane) ja korzystałem z funkcji time i ctime [code] #include <ctime> //... time_t czas; //tworzenie zmiennej przechowującej czas time(&czas); //pobranie do niej czasu std::cout<<ctime(&czas)<<"\n"; //przetworzenie czasu funkcją ctime na ciąg znaków char [/code] ciąg znaków wygląda tak: [code] [skrót dnia tygodnia ang.] [skrót miesiąca ang] [dzień(liczba)] [godzina w formacie 24h]:[minuta]:[sekunda] [rok][/code] (oczywiście wartości są bez nawiasów... no i godzinę, minutę, sekundę można łatwo pozyskać, choćby pobierając je do ciągu znaków char i później atoi albo strumienie napisowe (ew. własna funkcja) oczywiście na podstawie takiej, że wszystkie te wartości mają stałą długość: skrót nazwy dnia tygodnia: 3 litery skrót nazwy miesiąca: 3 litery dzień jest (chyba) z zerami wiodącymi, więc zawsze 2 cyfry godzina,minuta, sekunda po 2 cyfry (rozdzielone dwukropkami) i rok: 4 cyfry
smakowy155 komentarz 17 grudnia 2010 Autor komentarz 17 grudnia 2010 Jak pozyskac same sekundy, minuty, godziny?
wojtex5 komentarz 17 grudnia 2010 komentarz 17 grudnia 2010 jednym ze sposobów jest użycie funkcji atoi odziedziczonej z C [code] time_t czas; //tworzenie zmiennej przechowującej czas time(&czas); //pobranie do niej czasu char godzina[3],minuta[3],sekunda[3]; //po 3, bo trzeba pomieścić znak \0 char*c_czas = ctime(&czas); godzina[0]=c_czas[11]; godzina[1]=c_czas[12]; minuta[0]=c_czas[14]; //przeskoczenie dwukropka minuta[1]=c_czas[15]; sekunda[0]=c_czas[17];//przeskoczenie 2. dwukropka sekunda[1]=c_czas[18]; int gdz,min,sek; gdz = atoi(godzina); min = atoi(minuta); sek = atoi(sekunda); printf("aktualna godzina: %d:%d:%d\n",gdz,min,sek); //... [/code] drugim sposobem jest użycie strumieni napisowych. strumienie napisowe są dostępne po dołączeniu biblioteki <sstream> (rozwijając skrót StringStream) [code] #include <sstream> //dołączenie strumieni napisowych #include <string> //dołączenie klasy napisów (w stylu C++ dla odróżnienia) #include <ctime> //... time_t czas; //tworzenie zmiennej przechowującej czas time(&czas); //pobranie do niej czasu std::string s_czas(ctime(&czas)); std::stringstream F; F<<s_czas[11]<<s_czas[12]<<" "<<s_czas[14]<<s_czas[15]<<" "<<s_czas[17]<<s_czas[18]; int gdz,min,sek; F>>gdz>>min>>sek; //i już masz w zmiennych gdz, min, sek odpowiednie wartości. std::cout<<"aktualna godzina: "<<gdz<<":"<<min<<":"<<sek; //... [/code]
smakowy155 komentarz 18 grudnia 2010 Autor komentarz 18 grudnia 2010 Aha. Dzięki. I jeszcze jak zrobić 'zamrożenie' programu na np 2 sekundy.
tom300 komentarz 18 grudnia 2010 komentarz 18 grudnia 2010 [code]Sleep(2000);[/code] Zatrzymuje na 2 sekundy.
smakowy155 komentarz 19 grudnia 2010 Autor komentarz 19 grudnia 2010 (edytowane) Nie działa mi funkcja sleep
new_user komentarz 26 grudnia 2010 komentarz 26 grudnia 2010 [quote name='smakowy155' timestamp='1292750189' post='1145458'] Nie działa mi funkcja sleep [/quote] [code] Sleep nie sleep [/code]
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.