¿Cómo evitar que la aplicación de consola C++ se cierre inmediatamente?

Resuelto Adam P asked hace 14 años • 36 respuestas

Últimamente, he estado intentando aprender C++ en este sitio web . Desafortunadamente, cada vez que intento ejecutar uno de los ejemplos de código, veo que el programa se abre durante aproximadamente medio segundo y luego se cierra inmediatamente. ¿Hay alguna manera de evitar que el programa se cierre inmediatamente para poder ver los frutos de mi esfuerzo?

Adam P avatar Mar 27 '10 21:03 Adam P
Aceptado

Si está utilizando Visual Studio y está iniciando la aplicación de consola desde el IDE:

Al presionar CTRL-F5 (iniciar sin depurar) se iniciará la aplicación y se mantendrá abierta la ventana de la consola hasta que presione cualquier tecla.

nabulke avatar Mar 27 '2010 15:03 nabulke

Editar: como Charles Bailey señala acertadamente en un comentario a continuación, esto no funcionará si hay caracteres almacenados en el búfer stdin, y realmente no hay una buena manera de solucionarlo. Si está ejecutando con un depurador adjunto, la solución sugerida por John Dibling es probablemente la solución más limpia a su problema.

Dicho esto, dejaré esto aquí y tal vez a alguien más le resulte útil. Lo he usado mucho como una especie de truco rápido al escribir pruebas durante el desarrollo.


Al final de su mainfunción, puede llamarstd::getchar();

Esto obtendrá un solo carácter de stdin, lo que le dará el tipo de comportamiento "presione cualquier tecla para continuar" (si realmente desea un mensaje "presione cualquier tecla", tendrá que imprimir uno usted mismo).

Necesitas hacerlo #include <cstdio>para getchar.

James McNellis avatar Mar 27 '2010 14:03 James McNellis

La solución de James funciona para todas las plataformas.

Alternativamente, Windowstambién puede agregar lo siguiente justo antes de regresar de mainla función:

  system("pause");

Esto ejecutará el pausecomando que espera hasta que presione una tecla y también muestra un mensaje agradable.Press any key to continue . . .

codaddict avatar Mar 27 '2010 14:03 codaddict

Si está utilizando Visual C++ 2010 Express de Microsoft y tiene el problema de que CTRL+F5 no funciona para mantener la consola abierta después de que el programa haya finalizado, eche un vistazo a este hilo de MSDN .

Probablemente su IDE esté configurado para cerrar la consola después de ejecutar CTRL+F5; de hecho, un "Proyecto vacío" en Visual C++ 2010 cierra la consola de forma predeterminada. Para cambiar esto, haga lo que sugirió el moderador de Microsoft:

Haga clic derecho en el nombre de su proyecto y vaya a la página Propiedades, expanda Propiedades de configuración -> Vinculador -> Sistema, seleccione Consola (/SUBSYSTEM:CONSOLE) en el menú desplegable Subsistema. Porque, por defecto, el proyecto vacío no lo especifica.

Mr. Underhill avatar Jan 29 '2011 03:01 Mr. Underhill