Datum in String auffangen
-
Ich habe folgende Funktion gefunden:
#include <iostream> using namespace std; #include <time.h> void main() { time_t Zeitstempel; tm *nun; Zeitstempel = time(0); nun = localtime(&Zeitstempel); cout << nun->tm_mday << '.' << nun->tm_mon+1 << '.' << nun->tm_year+1900 << " - " << nun->tm_hour << ':' << nun->tm_min << endl; }Würde jetz aber gern statt der cout Anweisung einen String mit dem Datum belegen. Ist das möglich? bzw wie?
Ich brauche das Datumsformat folgendermassen in dem String yyyymmdd hhmmmfg
-
Wenn es sich bei den Datentypen (sorry, keine Ahnung, was es für Datentypen in tm sind) um Strings handelt, könntest du sie einfach zusammen in einen mit strcpy(); oder strcat(); schreiben, ansonsten würde ich eine Konvertierung zu char [] oder string vornehmen und sie dann auf einen einzelnen String umkopieren.
habs getestet, die Datentypen sind int bei den Zahlen.
Von daher konvertieren in char und mittels strcpy/strcat in ein char-Array kopieren
-
time.h schrieb:
struct tm { int tm_sec; /* Seconds. [0-60] (1 leap second) */ int tm_min; /* Minutes. [0-59] */ int tm_hour; /* Hours. [0-23] */ int tm_mday; /* Day. [1-31] */ int tm_mon; /* Month. [0-11] */ int tm_year; /* Year - 1900. */ int tm_wday; /* Day of week. [0-6] */ int tm_yday; /* Days in year.[0-365] */ int tm_isdst; /* DST. [-1/0/1]*/ #ifdef __USE_BSD long int tm_gmtoff; /* Seconds east of UTC. */ __const char *tm_zone; /* Timezone abbreviation. */ #else long int __tm_gmtoff; /* Seconds east of UTC. */ __const char *__tm_zone; /* Timezone abbreviation. */ #endif };es handelt sich also um ints
naja man könnte in char* konvertieren(zB über nen stringstream) und denn einfach zu einem string mittels += hinzufügen
-
Vorden schrieb:
Wenn es sich bei den Datentypen (sorry, keine Ahnung, was es für Datentypen in tm sind) um Strings handelt, könntest du sie einfach zusammen in einen mit strcpy(); oder strcat(); schreiben, ansonsten würde ich eine Konvertierung zu char [] oder string vornehmen und sie dann auf einen einzelnen String umkopieren.
Warum so kompliziert?
1. bzg. void main()
2. Wie wärs mit stringstreams?
Beispiel:#include <iostream> #include <sstream> // Der header ist neu. #include <ctime> using namespace std; int main() { time_t Zeitstempel; tm *nun; Zeitstempel = time(0); nun = localtime(&Zeitstempel); // erzeuge ein ostringstream objekt. ostringstream ostream; // schreibe alles in den buffer von ostream. ostream << nun->tm_mday << '.' << nun->tm_mon+1 << '.' << nun->tm_year+1900 << " - " << nun->tm_hour << ':' << nun->tm_min; // konvertiere den kompletten Inhalt (der z.Z. im buffer von ostream steht) // nach std::string string s = ostream.str(); cout << "\n s: " << s << "\n\n"; return 0; }/edit: zu spät...
Caipi
-
Es handelt sich eigentlich um eine C-Frage, ich denke, das einfachste waere wenn Du die strftime-Funktion benutzen wuerdest (eine aehnliche Frage war unlaengst im ANSI-C-Forum);
char szTimeStr [100]; /* 100 sollte hier vollkommen ausreichen */ time_t Zeitstempel; tm *nun; Zeitstempel = time(0); nun = localtime(&Zeitstempel); strftime(szTimeStr, 100, ... /* Formatstring: selber definieren - s.u. */, nun); cout << szTimeStr;Fuer den Formatstring solltest Du entweder den ANSi-Standard oder ein anderes C-Referenzbuch heranziehen.
-
MBCS-CITP schrieb:
Es handelt sich eigentlich um eine C-Frage, ich denke, das einfachste waere wenn Du die strftime-Funktion benutzen wuerdest (eine aehnliche Frage war unlaengst im ANSI-C-Forum);
char szTimeStr [100]; /* 100 sollte hier vollkommen ausreichen */ time_t Zeitstempel; tm *nun; Zeitstempel = time(0); nun = localtime(&Zeitstempel); strftime(szTimeStr, 100, ... /* Formatstring: selber definieren - s.u. */, nun); cout << szTimeStr;Fuer den Formatstring solltest Du entweder den ANSi-Standard oder ein anderes C-Referenzbuch heranziehen.
Seit wann benutzt man in C cout ? Hab da in C eher was von printf gehört ...
-
Nein, aber aber, da er offensichlich mit Streams arbeiten will, habe ich cout benutzt. Ich persoenlich haette - auch in C++ - ein printf hingeschmiert. Aber ich will jetzt keine Diskussion uber das Fuer und Wieder der stdio.h vs. iostream starten.