2017-09-15 3 views
0

Ich möchte eine Verzögerung hinzufügen, so dass eine Zeile ausgeführt wird und nach einer kurzen Verzögerung wird die zweite ausgeführt. Ich bin ziemlich neu in C++, also bin ich mir nicht sicher, wie ich das überhaupt machen würde. Im Idealfall würde im folgenden Code "Loading ..." gedruckt und mindestens 1-2 Sekunden gewartet und dann "Loading ..." erneut gedruckt. Derzeit druckt er beide sofort, anstatt zu warten.So fügen Sie eine Verzögerung zum Code in C++ hinzu.

cout << "Loading..." << endl; 
// The delay would be between these two lines. 
cout << "Loading..." << endl; 
+0

haben Sie vergessen, das Betriebssystem zu erwähnen. Unter Linux können Sie die Unistd-Funktion verwenden: 'sleep (2)'? – Serge

+3

welche Version von C++? Ich verwende lieber 'std :: this_thread :: sleep_for (std :: chrono :: Sekunden (2))' ... – whoan

+0

Ich benutze C++ 11. –

Antwort

6

in C++ 11 können Sie diesen Thread und Crono verwenden, es zu tun:

#include <chrono> 
#include <thread> 
... 
using namespace std::chrono_literals; 
... 
std::this_thread::sleep_for(2s); 
+0

Schön, sauber und Standard. Sie müssen jedoch 'using namespace std :: chrono_literals;' hinzufügen, bevor Sie die Chrono-Literale verwenden können. – Patrick

+0

@Patrick danke, ich habe es nur zur Antwort hinzugefügt. – Serge

-1

Sie wollen die sleep(unsigned int seconds) Funktion von unistd.h. Rufen Sie diese Funktion zwischen den cout Anweisungen auf.

+0

'unistd.h' ist POSIX, nicht C++. – Barmar

+0

Das ist völlig richtig, aber das wird für ihn wahrscheinlich einfacher zu verstehen sein. – Saustin

+3

Das ist nicht Standard C++. In der Standardbibliothek gibt es eine vollkommen gute Schlaffunktion. Im Wesentlichen 'this_thread :: sleep_for (2s);'. –

0

In windons OS

#include <windows.h> 
Sleep(sometime_in_millisecs); // note uppercase S 

In Unix Basis O

#include <unistd.h> 
unsigned int sleep(unsigned int seconds); 

#include <unistd.h> 
int usleep(useconds_t usec); // Note usleep - suspend execution for microsecond intervals 
0

zu simulieren a ' Work-in-Progress-Bericht ", könnten Sie in Betracht ziehen:

// start thread to do some work 
m_thread = std::thread(work, std::ref(*this)); 

// work-in-progress report 
std::cout << "\n\n ... " << std::flush; 
for (int i=0; i<10; ++i) // for 10 seconds 
{ 
    std::this_thread::sleep_for(1s); // 
    std::cout << (9-i) << '_' << std::flush; // count-down 
} 

m_work = false; // command thread to end 
m_thread.join(); // wait for it to end 

Mit Ausgabe:

... 9_8_7_6_5_4_3_2_1_0_

Arbeit nach 10.175.240 verlassen uns

Übersicht: Die Methode 'Arbeit' nicht 'Finish', erhielt aber den Befehl Vorgang abbrechen und bei Zeitüberschreitung beenden. (ein erfolgreicher Test)

Der Code verwendet Chrono und Chrono_literals.

Verwandte Themen