rectangletangle
rectangletangle

Reputation: 53051

Making C++ pause

Is there a C++ equivalent to Python's time.sleep()?

Upvotes: 2

Views: 626

Answers (4)

borderless
borderless

Reputation: 968

Please note that the code above was tested on Code::Blocks 12.11 and Visual Studio 2012
on Windows 7.

For forcing your programme stop or wait, you have several options :


  • sleep(unsigned int)

The value has to be a positive integer in millisecond. That means that if you want your programme wait for 2 second, enter 2000.

Here's an example :

#include <iostream>     //for using cout
#include <stdlib.h>     //for using the function sleep

using namespace std;    //for using cout

int main(void)         
{
   cout << "test" << endl;
   sleep(5000);         //make the programme waiting for 5 secondes
   cout << "test" << endl;
   sleep(2000);         // wait for 2 secondes before closing

   return 0;
}

If you wait too long, that probably means the parameter is in second. So change it like that :

sleep(5);

For those who get error message or problem using sleep try to replace it by _sleep or Sleep especially on Code::Bloks.
And if you still getting probleme, try to add of one this library on the biggining of the code.

#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <dos.h>
#include <windows.h>

  • system("PAUSE")

A simple "Hello world" programme on windows console application would probably close before you can see anything. That the case where you can use system("Pause").

#include <iostream>    

using namespace std;   

int main(void)         
{
    cout << "Hello world!" << endl;

    system("PAUSE");

    return 0;
}

If you get the message "error: 'system' was not declared in this scope" just add the following line at the biggining of the code :

#include <cstdlib>

  • cin.ignore()

The same result can be reached by using cin.ignore() :

#include <iostream>     

using namespace std;    

int main(void)         
{
    cout << "Hello world!" << endl;

    cin.ignore();

    return 0;
}

  • cin.get()

example :

#include <iostream>     

using namespace std;    

int main(void)         
{
    cout << "Hello world!" << endl;

    cin.get();

    return 0;
}

  • getch()

Just don't forget to add the library conio.h :

#include <iostream>     
#include <conio.h>    //for using the function getch()

using namespace std;    

int main(void)
{

    cout << "Hello world!" << endl;

    getch();

    return 0;
}

You can have message telling you to use _getch() insted of getch

Upvotes: 0

Benjamin Lindley
Benjamin Lindley

Reputation: 103751

Use boost::this_thread::sleep

// sleep for 5 seconds
boost::this_thread::sleep(boost::posix_time::seconds(5)); 

Upvotes: 14

jhourback
jhourback

Reputation: 4571

The following code will sleep for 10 milliseconds.

boost::this_thread::sleep(boost::posix_time::milliseconds(10))

Refer to boost::posix_time::time_duration for more ways to construct the duration.

Upvotes: 5

Ben Voigt
Ben Voigt

Reputation: 283921

I'm not aware of any portable function, but mainstream OSes have usleep for *nix and Sleep for Windows.

Upvotes: 1

Related Questions