Подтвердить что ты не робот

Альтернативная функция в iostream.h для getch() of conio.h?

Я пытаюсь удерживать экран на моем выходе, используя заголовочный файл <iostream.h>, но я не знаю никакой эквивалентной функции для функций getch() и clrscr() <conio.h> в <iostream.h> или любая другая библиотека С++. Существуют ли такие функции?

4b9b3361

Ответ 1

Если вы работаете с окнами, вы можете использовать систему ( "пауза" ), это даст вам сообщение "нажать любую клавишу для продолжения".

Ответ 2

Функции conio.h являются расширениями компилятора языка, а не частью C или C++. В стандарте нет прямой замены C++.

Для getch() int ch = std::cin.get(); это, вероятно, самый близкий эквивалент - но имейте в виду, что это будет читать из буферизованного стандартного ввода, тогда как я думаю, что conio.h getch выполняет небуферизованное чтение.

Любая реализация clrscr() будет сильно зависеть от платформы - не все экраны или терминалы имеют понятие очистки, и те, у которых действительно есть совершенно разные способы доступа к этой функциональности.

Если вам нужно воспринимать терминал как нечто иное, чем набор потоков символов, лучше всего искать библиотеку, которая скрывает от вас детали базового терминала, экрана или консоли. Если вы работаете в UNIXish системе, посмотрите на библиотеку curses или ncurses; Я не знаю никаких предложений для других ОС.

Ответ 3

getch() и clrscr() будут работать с С++. Включить conio.h

Однако, если вы НЕ МОЖЕТЕ (по какой-либо причине) включить conio.h,

как насчет cin → dummy_var с отображаемым сообщением с просьбой нажать клавишу ввода?

Ответ 4

просто используйте cin.get();

Ответ 5

Просто используйте эти две функции:

fflush(stdin);
getchar();

Visual studio и Dev С++ включают это в заголовок iostream, поэтому нет необходимости включать дополнительный файл заголовка.

Ответ 6

Это то, что я обычно использую:

#include<iostream>
...
std::getchar();

Ответ 7

Поздний ответ, вы можете использовать std::cin.get(), это должно работать с большинством компиляторов. Если это не сработает, попробуйте добавить еще один.

int main () {

    // ...

    std::cin.get();
    std::cin.get();
    return 0x00;
}

Использование system("PAUSE") доступно только для Windows и является плохим программированием привычка. Причиной этого является буквально паузы или зависает вашу программу, а не только ожидания ввода. то есть. нажатие клавиши для выхода.

Ответ 8

Я понимаю, что это старый вопрос, но я буду отвечать тем не менее, потому что люди могут искать ответ на аналогичный вопрос.

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. Здесь ссылка на некоторую информацию об этом.

Ответ 9

Специфичная для платформы функция getch() из conio.h имеет две особенности:

  • Нет повторения символов.
  • Небуферизованное чтение символов.

Эхо-сигнал осуществляется терминалом вне среды C/C++. Им можно управлять только манипулируя терминалом. Кроме того, практически невозможно получить небуферизованный ввод/вывод с заголовком iostream.h.

Поэтому невозможно получить что-либо рядом с getch() используя только iostream.h.

(Существует множество реализаций getch(), например, использование termios.h для отключения эхо.)

Ответ 10

Вы можете использовать систему ( "пауза" ), которая выдает сообщение "нажмите любую клавишу для продолжения". Но он работает только в среде Windows. Я думаю, что все команды "system" - это команды dos. Исправьте меня, если я ошибаюсь