Другие языки программирования и технологии

C++. Как задержать выход из программы в конце выполнения, например, аналогом паскалевского readkey?

Что я пробовал:
conio.h, getch(): ребята с форумов ругаются, говорят, что старая библиотека и для быдла
iostream, cin.get(): работает только если нажать на ввод, другие символы отображаются, как будто я хочу ввести строку, да и вообще у меня некорректно работает, приходится дважды вызывать.
Помогите, чот совсем запутался.
Монте Кристо ...
Монте Кристо ...
50 628
> system("pause") выводит сообщение, а мне это нинужно.
Замените на
system("pause>nul");
Это же BATниковские команды.

> conio.h ...старая библиотека и для быдла
Все хедеры WinAPI тоже есть только на чистом Си.
Это тоже старая библиотека и для быдла?

> cin.get() ...приходится дважды вызывать
Достаточно 1 раза, если перед этим вызвать cin.sync();
Есет Примбетов
Есет Примбетов
15 749
Лучший ответ
getch();
cin.get();
system( "pause" );
Samir Samir
Samir Samir
38 457
Монте Кристо ... Насчёт первых двух я написал, system("pause") выводит сообщение, а мне это нинужно.
Пауза перед завершением консольной программы нужна только для удобства отладки. В рабочем приложении этой задержки быть не должно! Поэтому не важно, как её делать.
getchar();
Можно тупо написать свою функцию, у K&R был даже пример в книге.
Акрам Алибаев
Акрам Алибаев
13 245
"ребята с форумов ругаются, говорят, что старая библиотека и для быдла" - что это за бред? Что значит ругаются? Почему Вы такой мнительный, да и какая им разница, как Вы делаете задержку в программе во время отладки? В конце концов есть стандарт ISO/IEC 14882. Отбросьте все сомнения. Если Вы используете Vicrosoft Visual C++ при запуске отладки программы нажмите Ctrl+F5, тогда при завершении программы окно не закроется и будет ждать Ваших дальнейших действий. Также для отладки можно использовать командную строку Visual Studio - это избавит от указанной проблемы. Если все-таки программно хотите создать паузу, используйте функцию ввода строки gets() библиотеки stdio.h. Ее нужно прописать два раза и описанных выше проблем не будет. В любом случае, это лучше, чем замыкать какой либо цикл с ожиданием нажатия клавиши.
Сергей Баранов
Сергей Баранов
10 096
Если я не ошибаюсь, то можно попробовать во первых запретить визуализацию символов в потоке, это по конвейеру надо отправить потоку какой-то символ (посмотри описание класса в МСДН). А во вторых, читай в цикле в чар по символу и как только он получит какое-то значение или скан код, то тормозишь программу. В свое время я тоже мучился с самозакрывающимися консолями. Но поток помоему не самое удобное.
Монте Кристо ... Эх, как жаль, что пацаны с форума говорят, что getch() из conio.h для пидоров. Такая штука удобная.
system("pause"); - самый удачный. Если надо чтобы программа обрабатывала (опрос чего то или наблюдение) то заключаете код в цикл while( !getch())
{
ваш код
}
Malxaz Chachia
Malxaz Chachia
6 654