Kezdőoldal » Számítástechnika » Programozás » Hogy mentsem C++ ban a valós...

Hogy mentsem C++ ban a valós időt?

Figyelt kérdés

Számtalan forráskód van a neten. Tudom. Ki is próbáltam 1 csomót, de valahogy nem jöttek be.

A lényeg, hogy nekem nem a program idítás kezdetének ideje kell és az eltelt másodpercek is nagyon fontosak.

A feladat az hogy mikor lefut 1 bizonyos ciklus (nem fut mindig csak ha 1 adott dolog történik) akkor vagy fájlnévként mentse az időt(ne írja felül a már lementett időpontot), vagy 1 .txt dokumentumba. Eddig a legtöbb esetben lefagyott a program mikor implementáltam a kódot. (1x mentett aztán vége)

A __TIMESTAMP__ -el és az alábbi kóddal próbálkoztam, persze feladatra szabva. (eredménytelenül)


time_t now = time(0) ;

tm *ltm = localtime(&now);

cout << 1900 + ltm->tm_year<<"."<<1+ltm->tm_mon<<"."<<ltm->tm_mday<<"-"<<1+ltm->tm_hour<<":"<<1+ltm->tm_min<<":"<< 1 + ltm->tm_sec<<endl;

cin.get();


Aki segítene annak nagyon megköszönném.


2015. márc. 20. 17:40
 1/6 anonim ***** válasza:
100%

Ha többszálas a program, akkor a localtime() okozhat problémát. ( [link] )


Maga a beírt kódrészlet jónak tűnik. Esetleg érdemes utánajárni, hogy a localtime() milyen módon foglalja a memóriát, kell-e azt esetleg neked felszabadítani. A belinkelt oldalon erről nem írnak semmi. Viszont ha kell, és ciklusban fut a dolog, akkor pillanatok alatt kinyírhatja a progit a felszabadítás hiánya.

2015. márc. 20. 18:27
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:

Nyilván nem ez a kódrészlet okozza a problémát...

A többit miért nem másolod ide?

2015. márc. 20. 18:52
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:

És miként lehetne felszabadítani?

Nemszívesen tenném közzé a forráskódot (meg a jó fele opencv úgyh nem is lenne értelme.Már amennyiben vki ki is akarná próbálni)

Mással amúgy nem lehet baj mert tökéletesen működik a program.Csak ez üti ki.És hát semmi ördöngőset nem szeretnék az egésztől tényleg csak ennyit ami itt van.AZ aktuális idő a file nevébe.Már van egy ilyen részkódom is egy mentés formájában(ugyan ezen ciklus kapcsán). Lementi a fájlokat úgy h: file 1,2,3,... Az időt kéne csak hozzá írni (file 1-idő).

A timestamp-nél nem fagyott le, csak sajnos ott meg nem frissül az idő. Csak a program futásának kezdeti idejét adja vissza.

Hülye kérdés, de esetleg localtime-ot meglehet valahogy kerülni? És akkor nem kéne a memóriával játszani...

2015. márc. 20. 22:05
 4/6 anonim ***** válasza:

Közben megnéztem, nem kell, és nem is szabad felszabadítani:


[link]


Ügyesen kikerülted a szálak kérdését, de még ha nincsenek is, akkor is érdemes lehet a localtime_r/localtime_s verziókat is kipróbálni, platformtól függően. Mert ezekben tutira a saját adatodra való pointert kapod vissza, így biztonságosabb.

2015. márc. 20. 22:24
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:
Ha Windows operációs rendszered van rendkívül egyszerű feladat. Ha az van és még sem megy szólj.
2015. márc. 20. 23:41
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:

#include <Windows.h>

#include <iostream>


int _tmain(int argc, _TCHAR* argv[])

{

SYSTEMTIME s;


GetSystemTime(&s); // UTC (koordinált világidő) időt adja vissza


std::cout << s.wYear /*meg még amit akarsz*/ << std::endl;


GetLocalTime(&s); // Ez pedig a helyi időt, asszerint mi van beállítva a gépeden


std::cout << s.wYear /*meg még amit akarsz*/ << std::endl;


return 0;

}

2015. márc. 21. 19:18
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!