Ответ 1
Если вы работаете с окнами, вы можете использовать систему ( "пауза" ), это даст вам сообщение "нажать любую клавишу для продолжения".
Я пытаюсь удерживать экран на моем выходе, используя заголовочный файл <iostream.h>
, но я не знаю никакой эквивалентной функции для функций getch()
и clrscr()
<conio.h>
в <iostream.h>
или любая другая библиотека С++. Существуют ли такие функции?
Если вы работаете с окнами, вы можете использовать систему ( "пауза" ), это даст вам сообщение "нажать любую клавишу для продолжения".
Функции conio.h
являются расширениями компилятора языка, а не частью C или C++. В стандарте нет прямой замены C++.
Для getch() int ch = std::cin.get();
это, вероятно, самый близкий эквивалент - но имейте в виду, что это будет читать из буферизованного стандартного ввода, тогда как я думаю, что conio.h getch
выполняет небуферизованное чтение.
Любая реализация clrscr()
будет сильно зависеть от платформы - не все экраны или терминалы имеют понятие очистки, и те, у которых действительно есть совершенно разные способы доступа к этой функциональности.
Если вам нужно воспринимать терминал как нечто иное, чем набор потоков символов, лучше всего искать библиотеку, которая скрывает от вас детали базового терминала, экрана или консоли. Если вы работаете в UNIXish системе, посмотрите на библиотеку curses или ncurses; Я не знаю никаких предложений для других ОС.
getch() и clrscr() будут работать с С++. Включить conio.h
Однако, если вы НЕ МОЖЕТЕ (по какой-либо причине) включить conio.h,
как насчет cin → dummy_var с отображаемым сообщением с просьбой нажать клавишу ввода?
просто используйте cin.get();
Просто используйте эти две функции:
fflush(stdin);
getchar();
Visual studio и Dev С++ включают это в заголовок iostream
, поэтому нет необходимости включать дополнительный файл заголовка.
Это то, что я обычно использую:
#include<iostream>
...
std::getchar();
Поздний ответ, вы можете использовать std::cin.get()
, это должно работать с большинством компиляторов. Если это не сработает, попробуйте добавить еще один.
int main () {
// ...
std::cin.get();
std::cin.get();
return 0x00;
}
Использование system("PAUSE")
доступно только для Windows и является плохим программированием привычка. Причиной этого является буквально паузы или зависает вашу программу, а не только ожидания ввода. то есть. нажатие клавиши для выхода.
Я понимаю, что это старый вопрос, но я буду отвечать тем не менее, потому что люди могут искать ответ на аналогичный вопрос.
conio.h
- это (древняя) библиотека Windows и MS-DOS/PC-DOS C, которая была и используется для очень простого ввода и обработки клавиатуры без клавиатуры в среде Windows/DOS.
Оба getch()
и clrscr()
являются нестандартными дополнениями этого заголовка, и их следует избегать, когда это возможно, для стандартных функций C. getch()
обычно можно заменить на scanf()
, fread()
в C и std::cin
и std::cin.get
на С++. Что касается clrscr()
, ближайший вы можете получить:
for(int i = 0; i < 100; i++)
{
printf("\n");
}
ИЛИ
Существует также ncurses.h
в средах * nix. Здесь ссылка на некоторую информацию об этом.
Специфичная для платформы функция getch()
из conio.h имеет две особенности:
Эхо-сигнал осуществляется терминалом вне среды C/C++. Им можно управлять только манипулируя терминалом. Кроме того, практически невозможно получить небуферизованный ввод/вывод с заголовком iostream.h.
Поэтому невозможно получить что-либо рядом с getch()
используя только iostream.h.
(Существует множество реализаций getch()
, например, использование termios.h для отключения эхо.)
Вы можете использовать систему ( "пауза" ), которая выдает сообщение "нажмите любую клавишу для продолжения". Но он работает только в среде Windows. Я думаю, что все команды "system" - это команды dos. Исправьте меня, если я ошибаюсь