problem mit datum
-
hi, ich hoffe ich bin hier richtig

wollte soeben das aktuelle datum ausgeben und hier mein code:
#include <iostream> #include <ctime> using namespace std; int main () { cout << "Aktuelles Datum: "; system("date"); cout << endl; return 0; }ich verstehe nicht warum die ausgeben vertauscht werden.
waere super wenn mir jemand helfen koennte - danke schon mal!
-
int main () { cout << "Aktuelles Datum: "; cout.flush(); // <- Könnte helfen. system("date"); cout << endl; return 0; }Auf system sollte man übrigens, wenn möglich, verzichten:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39453.htmlEs gibt Zeitfunktionen in C, welche man über den Header <ctime> in C++ bekommt.
http://www.cplusplus.com/reference/clibrary/ctime/Zudem gibt es eine sehr nette DateTime Bibliothek von Boost:
http://www.boost.org/doc/libs/1_37_0/doc/html/date_time.htmlGrüssli
-
hallo, danke fuer deine rasche antwort.
kenn mich noch nicht so aus mit streams, aber ich verstehe hier nicht warum ich dieses flush brauche.
soweit ich weiß werden durch flush alle noch nicht ausgegebenen chars ausgegeben - oder?aber wenn ich meinen code ansehe sollte ja zuerst etwas ausgegeben werden und dann etwas neues.
warum benoetige ich das flush?
vielen dank...
-
AbsoluterBeginner schrieb:
aber wenn ich meinen code ansehe sollte ja zuerst etwas ausgegeben werden und dann etwas neues.
systemist keine Ausgabe! Beisystemwird eine Shell gestartet, auf welche das Programm wartet. In dieser neuen Shell kann es sein, dass eine Ausgabe erfolgt, muss es aber nicht.
Nun kann dein Text, welcher du überstd::coutvorher ausgegeben hast, noch in einem Puffer zwischenlagern, währendsystemausgeführt wird.systemmacht eine Ausgabe und überpsringt somit die vorherige, welche immer noch im Puffer liegt. Der Ausgabepuffer vonsystemund deinemstd::coutist nicht zwingend der gleiche!
Dasstd::cout.flush()garantiert nun, dass dein Ausgabepuffer vor dem Ausgabepuffer vomsystemAufruf geleert wird.Deshalb und aus anderen Gründen, sollte man allgemein auf
systemverzichten. Siehe den geposteten Link für die weiteren Gründe.Grüssli
-
danke, ich habe mir immer gedacht das der buffer nach dem ; geleert wird.
also der cout buffer flusht sich nach jedem vollstaendigen cout statement, ist aber anscheinen nicht so
danke fuer deine hilfe!
-
AbsoluterBeginner schrieb:
danke, ich habe mir immer gedacht das der buffer nach dem ; geleert wird.
also der cout buffer flusht sich nach jedem vollstaendigen cout statement, ist aber anscheinen nicht so
Nein, wird er nicht.
std::endltut es oder halt der manuelle Aufruf vonflush. Da man oft noch einestd::endlam Ende einer Ausgabe hinschreibt, so ist es halt üblich, dass der Stream am Ende geflusht wird
AbsoluterBeginner schrieb:
danke fuer deine hilfe!
Kein Problem, freu mich, dass ich helfen konnte.
Grüssli
-
aaah mit endl wird er geflusht...
jetzt habe ich es komplett verstanden, zum letzten mal danke!