such ejemplos c++ iostream

c++ - ejemplos - Función alternativa en iostream.h para getch() de conio.h?



iostream vs stdio (10)

Entiendo que esta es una pregunta antigua, pero voy a responder de todas formas porque las personas pueden estar buscando una respuesta a una pregunta similar.

conio.h es una conio.h (antigua) de C de Windows y MS-DOS / PC-DOS que era, y aún se usa para el manejo y entrada de teclado simple y básico en un entorno Windows / DOS.

Tanto getch() como clrscr() son adiciones no estándar por este encabezado, y deben evitarse cuando sea posible para las funciones C estándar. getch() generalmente se puede reemplazar con scanf() , fread() , en C y std::cin y std::cin.get en C ++. En cuanto a clrscr() , lo más cercano que puedes conseguir es:

for(int i = 0; i < 100; i++) { printf("/n"); }

O:

También hay ncurses.h en ncurses.h * nix. Aquí hay un enlace a alguna información sobre eso.

Estoy tratando de mantener la pantalla en mi salida usando el archivo de cabecera <iostream.h> , pero no conozco ninguna función equivalente a las funciones getch() y clrscr() de <conio.h> en <iostream.h> o cualquier otra biblioteca de C ++. ¿Hay tales funciones?


Esto es lo que suelo usar:

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


La función específica de la plataforma getch() de conio.h tiene dos características especiales:

  • Sin eco de personajes.
  • Lectura inédita de personajes.

El eco es realizado por el terminal fuera del entorno C / C ++. Solo se puede controlar manipulando el terminal. Además, es casi imposible obtener E / S sin búfer con el encabezado iostream.h.

Por lo tanto, no es posible acercarse a getch() utilizando iostream.h solo.

(Hay muchas implementaciones de getch() , por ejemplo, usar termios.h para desactivar el eco).


Las funciones conio.h son extensiones de compilador para el lenguaje, que no son parte de C o C ++. No hay un reemplazo directo en C ++ estándar.

Para getch (), int ch = std::cin.get(); Probablemente sea el equivalente más cercano, pero tenga en cuenta que esto se leerá de la entrada estándar almacenada en búfer, mientras que creo que el comando conio.h getch hace una lectura sin búfer.

Cualquier implementación de clrscr() será muy dependiente de la plataforma: no todas las pantallas o terminales tienen una noción de borrado, y las que sí tienen formas muy diferentes de acceder a esa funcionalidad.

Si necesita tratar el terminal como algo más que un conjunto de flujos de caracteres, lo mejor que puede hacer es buscar una biblioteca que le oculte los detalles del terminal, la pantalla o la consola subyacente. Si está en un sistema UNIX, mire la biblioteca de curses o ncurses; No sé de ninguna sugerencia para otros sistemas operativos.


Puede usar el sistema ("pausa"), que produce el mensaje "presione cualquier tecla para continuar". Pero funciona solo en el entorno de Windows. Creo que todos los comandos del "sistema" son comandos dos. Corrígeme si estoy equivocado


Si trabajas en Windows puedes usar el sistema ("pausa"), esto te dará el mensaje "Presiona cualquier tecla para continuar".


Solo usa estas dos funciones:

fflush(stdin); getchar();

Visual studio y Dev C ++ incluyen esto en su encabezado de iostream por lo que no es necesario incluir un archivo de encabezado adicional.


getch () y clrscr () funcionarán con C ++. Incluir conio.h

Sin embargo, si NO PUEDE (por alguna razón) incluir conio.h,

¿qué hay de cin >> dummy_var con un mensaje en pantalla que le pide al usuario que presione enter?


solo usa cin.get ();


Respuesta tardía , puedes usar std::cin.get() , esto debería funcionar con la mayoría de los compiladores. Si eso no funciona, intente agregar otro.

int main () { // ... std::cin.get(); std::cin.get(); return 0x00; }

El uso del system("PAUSE") solo está disponible en Windows y es un bad habit programación. La razón de esto es que literalmente detiene o congela su programa en lugar de simplemente esperar una entrada. es decir. una pulsación para salir.