Заставить C ++ сделать паузу - PullRequest
2 голосов
/ 12 ноября 2010

Есть ли в C ++ эквивалент Python's time.sleep () ?

Ответы [ 4 ]

14 голосов
/ 12 ноября 2010

Использование boost :: this_thread :: sleep

// sleep for 5 seconds
boost::this_thread::sleep(boost::posix_time::seconds(5)); 
5 голосов
/ 12 ноября 2010

Следующий код будет бездействовать в течение 10 миллисекунд.

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

Обратитесь к boost :: posix_time :: time_duration для получения дополнительных способов построения продолжительности.

1 голос
/ 12 ноября 2010

Я не знаю ни о какой переносимой функции, но основные ОС имеют usleep для * nix и Sleep для Windows.

0 голосов
/ 21 февраля 2013

Обратите внимание, что приведенный выше код был протестирован в Code :: Blocks 12.11 и Visual Studio 2012
в Windows 7.

Для принудительного останова или ожидания вашей программы у вас есть несколько вариантов:


  • sleep (unsigned int)

Значение должно быть положительным целым числом в миллисекундах.Это означает, что если вы хотите, чтобы ваша программа ждала 2 секунды, введите 2000.

Вот пример:

#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;
}

Если вы ждете слишком долго, это, вероятно, означает, что параметр находится в секундах.Поэтому измените его следующим образом:

sleep(5);

Для тех, кто получает сообщение об ошибке или проблему с использованием сна, попробуйте заменить его на _sleep или Sleep, особенно в Code :: Bloks.
И если проблема все еще возникает,попробуйте добавить одну эту библиотеку на большой код.

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

  • system ("PAUSE")

Простая программа «Hello world» в консольном приложении Windows, вероятно, закроется, прежде чем вы сможете что-либо увидеть.Это тот случай, когда вы можете использовать систему («Пауза»).

#include <iostream>    

using namespace std;   

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

    system("PAUSE");

    return 0;
}

Если вы получаете сообщение «ошибка:« система »не была объявлена ​​в этой области», просто добавьте следующую строку в началекод:

#include <cstdlib>

  • cin.ignore ()

Того же результата можно достичь с помощью cin.ignore ():

#include <iostream>     

using namespace std;    

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

    cin.ignore();

    return 0;
}

  • cin.get ()

пример:

#include <iostream>     

using namespace std;    

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

    cin.get();

    return 0;
}

  • getch ()

Только не забудьте добавить библиотеку 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;
}

Вы можете получить сообщение, сообщающее вамиспользовать _getch () вместо getch

...