Uhr
-
Wie bekomme ich eine Uhr hin?
Z.B. in der Konsole soll oben rechts in der Ecke eine 1 stehen und dann jede Sekunde ein hochzählen. Also wie stelle ich fest das eine Sekunde vergangen ist? (Oder eine Millisekunde). Ich habe schon gegoogelt und auch vieles gefunden, aber ich kann mit den meisten Sachen (Beiträgen) nichts anfangen. Ich hoffe Ihr könnt mir das ein wenig erklären und eine einface aber auch gute Lösung vorschlagen.
-
Z.B. in der Konsole soll oben rechts in der Ecke eine 1 stehen
C++ kennt keine Konsolen. Wenn du Konsolen-Graphik machen willst, musst du Plattformabhängige APIs (wie die allbekannte WinAPI) verwenden.
Ein einfaches Beispiel, wie mann die Zeit in einen String packt und diesen ausgibt:
#include <iostream> #include <ctime> int main() { auto t = std::time(nullptr); std::string str(100, '\0'); std::strftime( &str[0], str.size(), "%H:%M:%S", std::localtime(&t) ); std::cout << str << '\n'; }
-
Danke für die Antwort. Aber könntest du mir die Zeilen etwas erklären?
auto t = std::time(nullptr); std::string str(100, '\0'); std::strftime( &str[0], str.size(), "%H:%M:%S", std::localtime(&t) );Oder mir einen Link geben wo ich genau das nachlesen kann?
-
std::strftime,std::time,std::tm.Und natürlich: http://bit.ly/RlOUok
-
Edit: Alles gelöscht war mist.
-
Arcoth schrieb:
std::strftime,std::time,std::tm.Und natürlich: http://bit.ly/RlOUok
danke danke!
Aber ich vestehe es nicht (war zu erwarten...)
Ich habe das hierstd::strftime( &str[0], str.size(), "%H:%M:%S", std::localtime(&t) );So verstanden das daraus eine "Uhrzeit" gemacht wird. Und bei dem Rest so gar nichts

Es wäre nett wenn du mir ein paar deutsche Worte dazu sagen könntest.
-
auto t = std::time(nullptr); // t wird initialisiert mit der Anzahl der Sekunden seit dem Epoch. std::string str(100, '\0'); // Initialisiert einen leeren String mit hundert Zeichen. std::strftime( &str[0], str.size(), "%H:%M:%S", std::localtime(&t) ); /* localtime macht aus der Anzahl der Sekunden eine Datenstruktur, die Monate, Tage, Jahre, Minuten usw. enthält. Diese werden dann anschließend mittels strftime formatiert in den String geschrieben. */Zusätzlich kann das ganze noch folgendermaßen verbessert werden: Die Anfangsgröße des Strings kann locker auf zehn reduziert werden, und folgende Zeilen können auch nicht schaden:
auto size = std::strftime( &str[0], str.size(), "%H:%M:%S", std::localtime(&t) ); str.resize( size ); // str.shrink_to_fit();
-
Okay danke!
Jedzt habe ich noch eine Frage (die hat nur noch teilweise etwas mit der zu tun)
Wie bekomme ich es hin das 2 "Prozesse" gleichzeitig laufen?
Sprich, es soll ein Name eingeben werden und nebenbei soll eine Uhrzeit laufen.
-
Ich glaube, was du suchst ist ein GUI-Toolkit. Denn so etwas kann man auf der Konsole mit Standard-C++ definitiv nicht machen (und damit wäre der Fall für dieses Board erledigt), und ob das mit der WinAPI geht weiß ich nicht - ggf. mach aber dort einen Thread auf.
Wie bekomme ich es hin das 2 "Prozesse" gleichzeitig laufen?
Du meinst wohl Threads.
Seit C++11 gibt es die Klassestd::thread, welche einen separaten Thread repräsentiert. Es gibt auchstd::async. Falls du dir jetzt aber Multithreading in C++11 aneignen willst, such dir ein Buch oder Google das mal.