C ++ Замена системного (пауза) вызова

Я читал, что system("pause") работает медленно и его не рекомендуется использовать.
Есть ли какая-нибудь функция, которую я могу использовать вместо нее?
Я пробовал getchar(), но если раньше у меня был вызов scanf, он просто не работает ждет другого ввода, только если я поставлю под него другой getchar() (но я не думаю, что это хорошее решение).

изменить: я использую Microsoft Visual Studio 2010


person user    schedule 23.07.2010    source источник
comment
Чего вы пытаетесь достичь? getchar() читает ввод, что не то же самое, что пауза. Для чего вам нужно сделать паузу?   -  person CB Bailey    schedule 24.07.2010
comment
Есть что-то забавное в жалобе на медленный вызов "паузы".   -  person Will Dean    schedule 24.07.2010


Ответы (4)


Я пробовал getchar (), но если раньше у меня был вызов scanf, он просто не ждет другого ввода

Убедитесь, что вы очистили входной буфер перед его вызовом; в противном случае он может получить ключ, который уже был в буфере (например, символ новой строки ...).

person Amber    schedule 23.07.2010

Ты пытался?

  • сон (целое время);
  • getch ();
person Kristina Brooks    schedule 23.07.2010

_getch() от conio.h должно оказаться адекватной заменой.

person ChrisV    schedule 23.07.2010

Этот вызов system("pause") вставляется в автоматически сгенерированный код некоторыми IDE (на ум приходит Bloodshed Dev C ++), потому что окно консоли, которое появляется при запуске кода из IDE, недолговечно и исчезает, как только программа будет завершена.

Решение состоит в том, чтобы не запускать код из IDE - вместо этого откройте настоящее окно консоли, и вы все равно сможете прочитать вывод своей программы после ее завершения.

person Drew Hall    schedule 23.07.2010