2009-09-04 42 views
17

Estoy tratando de mantener la pantalla en mi salida utilizando el archivo de cabecera <iostream.h>, pero yo no conozco a ninguna función equivalente a las getch() & clrscr() funciones de <conio.h> en <iostream.h> o cualquier otra biblioteca de C++. ¿Hay alguna de esas funciones?Función alternativa en iostream.h para getch() de conio.h?

+5

En C++, la cabecera es simplemente '#include ', ** no ** '#include ' ' – GManNickG

+0

' puede ser el estándar, pero 'clrscr()' no es estándar, por lo que realmente tiene sentido para encontrar eso en un encabezado no estándar. – MSalters

+0

En realidad, siempre me he preguntado y quería preguntar por qué algunas personas siempre comienzan un programa con clrscr() y terminan con getch() en primer lugar. – UncleBens

Respuesta

-18

si trabaja en Windows puede usar el sistema ("pausa"), esto le dará un mensaje "presione cualquier tecla para continuar".

+15

Esto funciona, pero es un [mal hábito para entrar] (http://www.cplusplus.com/forum/articles/11153/). – dwurf

+2

Ni siquiera debería usar esto en absoluto. – CLearner

+3

También hay un 'std :: cin.ignore();' para esto. –

6

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

Sin embargo, si usted no puede (por alguna razón) incluyen conio.h,

¿qué hay de cin >> dummy_var con un mensaje en la pantalla que pide al usuario que pulse entrar?

+0

-1, porque conio.h no es parte del estándar C. –

+4

+1 porque la mayoría de las cosas interesantes que puede hacer con C y C++ en realidad no están en el estándar. Ninguno de los estándares está destinado a ser completo, y el hecho de que puede incluir encabezados distintos a los obligatorios por norma es mucho por diseño. – MSalters

24

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

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

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

Si necesita tratar la terminal como algo más que un conjunto de secuencias de caracteres, su mejor opción es buscar una biblioteca que oculte los detalles de la terminal, pantalla o consola subyacente. Si tienes un sistema UNIXish, mira la biblioteca de curses o ncurses; No sé de ninguna sugerencia para otros sistemas operativos.

-5

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

+1

Estás a medio camino a la derecha. 'system ()' ejecuta '' utilizando el procesador de comandos del sistema operativo en el que se encuentre actualmente. [Referencia] (http://www.cplusplus.com/reference/clibrary/cstdlib/system/0). También se considera una mala forma porque no es portátil entre plataformas. – dwurf

+1

@Kokizzu: 'pausa: comando no encontrado' –

3

sólo tiene que utilizar estas dos funciones:

fflush(stdin); 
getchar(); 

Visual Studio y Dev C++ incluyen esto en su cabecera iostream así que no hay necesidad de incluir el archivo de cabecera adicional.

+4

http://stackoverflow.com/a/257203/183120 ' fflush (stdin) 'comportamiento indefinido invocado en el estándar C 7.18.5.2/2. – legends2k

1

Última respuesta, puede 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; 
} 

Usando system("PAUSE") sólo está disponible en Windows y es un bad programación habit. La razón de esto es que literalmente hace una pausa o congela su programa en lugar de simplemente esperar una entrada. es decir. una tecla para salir.

3

Esto es lo que suelo usar:

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

entiendo que esta es una vieja pregunta, pero voy a responder, sin embargo, porque las personas pueden estar buscando una respuesta a una pregunta similar.

conio.h es una biblioteca (antigua) de Windows y MS-DOS/PC-DOS C que se usó, y todavía se utiliza, para la entrada y manejo básicos del teclado en un entorno Windows/DOS.

Ambos getch() y 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(), el más cercano que puedes conseguir es:

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

O:

También ncurses.h está en entornos * nix. Here's a link para obtener información sobre eso.

Cuestiones relacionadas