ZEIT Ausgeben
-
Hi Leute,
Ich wollte mal wissen, ob es in der iostream
auch eine Funktion zum holen und ausgeben der Zeit gibt.Wenn ja welche?
-
selber nachschauen http://www.cplusplus.com/reference/iostream/iostream/
-
nope ... Header <ctime> hat die Zeitfunktionen drin ...
-
hab da mal was vorbereitet

// und #include <ctime> oder #include <time.h> net vergessen ;) char *timeStamp( ) { time_t stamp; tm *now; char szBufferTime[ 16 ]; char szBufferHour[ 4 ]; char szBufferMin[ 4 ]; char szBufferSec[ 4 ]; stamp = time( 0 ); now = localtime( &stamp ); szBufferHour[ 0 ] = 0; if( now->tm_hour < 10 ) { char szBh[ 4 ]; szBh[ 0 ] = 0; sprintf( szBh, "%d", now->tm_hour ); strcat( szBufferHour, "0" ); strcat( szBufferHour, szBh ); } else { sprintf( szBufferHour, "%d", now->tm_hour ); } szBufferMin[ 0 ] = 0; if( now->tm_min < 10 ) { char szBm[ 4 ]; szBm[ 0 ] = 0; sprintf( szBm, "%d", now->tm_min ); strcat( szBufferMin, "0" ); strcat( szBufferMin, szBm ); } else { sprintf( szBufferMin, "%d", now->tm_min ); } szBufferSec[ 0 ] = 0; if( now->tm_sec < 10 ) { char szBs[ 4 ]; szBs[ 0 ] = 0; sprintf( szBs, "%d", now->tm_sec ); strcat( szBufferSec, "0" ); strcat( szBufferSec, szBs ); } else { sprintf( szBufferSec, "%d", now->tm_sec ); } szBufferTime[ 0 ] = 0; strcat( szBufferTime, szBufferHour ); strcat( szBufferTime, ":" ); strcat( szBufferTime, szBufferMin ); strcat( szBufferTime, ":" ); strcat( szBufferTime, szBufferSec ); return( (char *)szBufferTime ); }hoffe es hilft dir,
Gruß Tobi.
-
Du kennst aber schon strftime ?
-
std::ostream& operator<<(std::ostream& stream, const std::tm& obj) { char arr[64]; std::strftime(arr, 64, "%A, %x - %X"); stream << arr; return stream; }std::cout << std::localtime(std::time(0)) << std::endl;...
-
T0bi schrieb:
char *timeStamp( ) { char szBufferTime[ 16 ]; ... return( (char *)szBufferTime ); }das geht nicht gut... da müsste eigentlich auch der Compiler warnen, von wegen 'returning reference to temporary' oder so.
Entweder szBufferTime statisch machen oder mit malloc dauerhaften Speicher anfordnern.
-
Danke für Eure Antworten ich werde mal schauen was mir am besten weiter hilft

-
wieos den szBufferTime statisch machen... die variable brauch ich doch nur ganz kurz um dort die ermittelte zeit zu speichern und dann via pointer zu übergeben, dann kann sie doch wieder freigegeben werden, oder nicht?
Gruß Tobi.
-
Du weißt aber das die Variable aufm Stack nicht mehr existiert, wenn du den Scope verlässt?
-
T0bi schrieb:
wieos den szBufferTime statisch machen... die variable brauch ich doch nur ganz kurz um dort die ermittelte zeit zu speichern und dann via pointer zu übergeben, dann kann sie doch wieder freigegeben werden, oder nicht?
Gruß Tobi.
das problem ist, dass die adresse die du dann rausbekommst auf ne stelle zeigen wird, auf der nach beendigung der funktion nichts mehr steht.