Что я пробовал:
conio.h, getch(): ребята с форумов ругаются, говорят, что старая библиотека и для быдла
iostream, cin.get(): работает только если нажать на ввод, другие символы отображаются, как будто я хочу ввести строку, да и вообще у меня некорректно работает, приходится дважды вызывать.
Помогите, чот совсем запутался.
Другие языки программирования и технологии
C++. Как задержать выход из программы в конце выполнения, например, аналогом паскалевского readkey?
> system("pause") выводит сообщение, а мне это нинужно.
Замените на
system("pause>nul");
Это же BATниковские команды.
> conio.h ...старая библиотека и для быдла
Все хедеры WinAPI тоже есть только на чистом Си.
Это тоже старая библиотека и для быдла?
> cin.get() ...приходится дважды вызывать
Достаточно 1 раза, если перед этим вызвать cin.sync();
Замените на
system("pause>nul");
Это же BATниковские команды.
> conio.h ...старая библиотека и для быдла
Все хедеры WinAPI тоже есть только на чистом Си.
Это тоже старая библиотека и для быдла?
> cin.get() ...приходится дважды вызывать
Достаточно 1 раза, если перед этим вызвать cin.sync();
getch();
cin.get();
system( "pause" );
cin.get();
system( "pause" );
Монте Кристо ...
Насчёт первых двух я написал, system("pause") выводит сообщение, а мне это нинужно.
Пауза перед завершением консольной программы нужна только для удобства отладки. В рабочем приложении этой задержки быть не должно! Поэтому не важно, как её делать.
getchar();
Можно тупо написать свою функцию, у K&R был даже пример в книге.
Можно тупо написать свою функцию, у K&R был даже пример в книге.
"ребята с форумов ругаются, говорят, что старая библиотека и для быдла" - что это за бред? Что значит ругаются? Почему Вы такой мнительный, да и какая им разница, как Вы делаете задержку в программе во время отладки? В конце концов есть стандарт ISO/IEC 14882. Отбросьте все сомнения. Если Вы используете Vicrosoft Visual C++ при запуске отладки программы нажмите Ctrl+F5, тогда при завершении программы окно не закроется и будет ждать Ваших дальнейших действий. Также для отладки можно использовать командную строку Visual Studio - это избавит от указанной проблемы. Если все-таки программно хотите создать паузу, используйте функцию ввода строки gets() библиотеки stdio.h. Ее нужно прописать два раза и описанных выше проблем не будет. В любом случае, это лучше, чем замыкать какой либо цикл с ожиданием нажатия клавиши.
Если я не ошибаюсь, то можно попробовать во первых запретить визуализацию символов в потоке, это по конвейеру надо отправить потоку какой-то символ (посмотри описание класса в МСДН). А во вторых, читай в цикле в чар по символу и как только он получит какое-то значение или скан код, то тормозишь программу. В свое время я тоже мучился с самозакрывающимися консолями. Но поток помоему не самое удобное.
Монте Кристо ...
Эх, как жаль, что пацаны с форума говорят, что getch() из conio.h для пидоров. Такая штука удобная.
system("pause"); - самый удачный. Если надо чтобы программа обрабатывала (опрос чего то или наблюдение) то заключаете код в цикл while( !getch())
{
ваш код
}
{
ваш код
}
Похожие вопросы
- Я зная C++ (уровень - днище) написал полноценную программу на C# за 7 дней. А программисты C# могут так же на C++?
- Поиск наибольшего отрицательного элемента массива (c++) и его удаление, написал программу, где то косячек =/
- Как в C# вызвать событие из кода программы?
- даны 3 разл целых числа a,b,c используя оператор GOTO составить программу для ввода чисел в порядке убывания
- Какие есть программы для очистки компьютера? (Например для очистки диска С)
- ассемблер как записать в память программы, в реальном режиме, например строку mess db "hi"? mov [1234],ex не хочет
- Помогите исправить ошибку в программе (c++).
- Программа на C++ в Windows Form
- C#. Как сделать, чтобы программа проверяла тип введённой переменной?
- Можно ли на C++ написать сложные программы? Как?