visual studio para instalar compiler compilar como c++ windows console

para - visual studio install c++



C++-¿Mantener abierta la ventana de la consola? (11)

En primer lugar, para incluir las funciones de C ++ que debe utilizar

incluir <iostream.h> lugar de stdio .h

and to hold the output screen there is a simple command getch(); here, is an example:

#include<iostream.h> #include<conio.h> void main() //or int main(); if you want { cout<<"c# is more advanced than c++"; getch(); }

gracias

Mi pregunta es súper simple, pero estoy pasando de C # a C ++, y me preguntaba qué comando mantiene abierta la ventana de la consola en C ++.

Sé que en C #, la forma más básica es:

Console.ReadLine();

O si desea que el usuario presione cualquier tecla, es:

Console.ReadKey(true);

¿Cómo se hace esto en C ++? La única razón por la que formulo aquí esta sencilla pregunta es porque no he podido encontrar una respuesta clara y buena en Internet.


¿Qué tal std::cin.get(); ?

Además, si está usando Visual Studio, puede ejecutar sin depurar (CTRL-F5 de manera predeterminada) y no cerrará la consola al final. Si lo ejecuta con la depuración, siempre puede poner un punto de interrupción en el corchete de cierre de main() .


Aproximadamente el mismo tipo de cosas que has hecho en C #. Llamar a getch() es probablemente el más simple.


Como dice Thomas, el cin ignore es una buena manera. Para esperar siempre a que el usuario presione enter (incluso si se usa exit), registre una función atexit:

#include <iostream> void pause() { ::std::cout<<"/nPress ENTER to exit."; ::std::cin.sync(); if(::std::cin.get()!=''/n'') ::std::cin.ignore(0xFFFFFFFF,''/n''); } int main() { atexit(pause); // whatever return 0; }


En Windows, puede usar _getch() en

<conio.h>

encabezamiento.


Si su problema es retener la ventana de la consola dentro de Visual Studio sin modificar su aplicación (código c) y ejecutarlo con Ctrl + F5 (cuando se ejecuta Ctrl + F5) pero la ventana aún se está cerrando, la sugerencia principal es configurar / SUBSISTEMA : Opción del vinculador CONSOLE en su proyecto de Visual Studio.

como lo explica DJMooreTX en http://social.msdn.microsoft.com/Forums/en-US/vcprerelease/thread/21073093-516c-49d2-81c7-d960f6dc2ac6

1) Abre tu proyecto y ve al Explorador de soluciones. Si me sigues en K & R, tu "Solución" será "hola" con 1 proyecto debajo, y "hola" en negrita.

  1. Haga clic con el botón derecho sobre el ''hola'' (o el nombre de su proyecto).

  2. Elija "Propiedades" en el menú contextual.

  3. Elija Propiedades de configuración> Enlazador> Sistema.

  4. Para la propiedad "Subsistema" en el panel de la derecha, haga clic en el cuadro desplegable en la columna de la derecha.

  5. Elija "Consola (/ SUBSISTEMA: CONSOLA)"

  6. Haga clic en Aplicar, espere a que termine de hacer lo que haga, luego haga clic en Aceptar. (Si "Aplicar" aparece atenuado, elija alguna otra opción del subsistema, haga clic en Aplicar, luego vuelva y aplique la opción de consola. Mi experiencia es que, por sí solo, no funcionará).

Ahora haga el CTRL-F5 de Boris, espere a que su programa compile y enlace, encuentre la ventana de la consola debajo de todos los demás elementos no deseados en su escritorio, y lea la salida de su programa, seguido por el favorito "Presione cualquier tecla para continuar ... "pronto.

De nuevo, CTRL-F5 y las sugerencias del subsistema funcionan juntas; no son opciones separadas


También puede apoyarse en el IDE un poco. Si ejecuta el programa utilizando el comando "Iniciar sin depuración" (Ctrl + F5 en mi caso), la ventana de la consola permanecerá abierta incluso después de que el programa termine con un "Presione cualquier tecla para continuar ...". mensaje.

Por supuesto, si quiere usar el "Toque cualquier tecla" para mantener su programa en ejecución (es decir, mantener un hilo vivo), esto no funcionará. Y no funciona cuando ejecuta "con depuración". Pero luego puedes usar puntos de interrupción para mantener abierta la ventana.


Un método más apropiado es usar std::cin.ignore :

#include <iostream> void Pause() { std::cout << "Press Enter to continue..."; std::cout.flush(); std::cin.ignore(10000, ''/n''); return; }


Yo uso std::getwchar() en mi entorno que es con el compilador mingw32 - gcc-4.6.2. Aquí hay un código de muestra.

#include <iostream> #include "Arithmetics.h" using namespace std; int main() { ARITHMETICS_H::testPriorities(); cout << "Press any key to exit." << endl; getwchar(); return 0; }


si crea una aplicación de consola, la consola permanecerá abierta hasta que cierre la aplicación.

si ya creaste una aplicación y no sabes cómo abrir una consola, puedes cambiar el subsistema como Consola (/ Subsistema: Consola) en las configuraciones del proyecto -> vinculador -> sistema.


La manera correcta

cin.get();

cin.get() es compatible con C ++ y portátil. Recuperará el siguiente carácter de la entrada estándar (stdin). El usuario puede presionar Enter y su programa continuará ejecutándose, o finalizará en nuestro caso.

Toma de Microsoft

Microsoft tiene un artículo de Knowledge Base titulado Prevención de la ventana de la consola que desaparece . Describe cómo detener la ejecución solo cuando es necesario, es decir, solo cuando el usuario genera una nueva ventana de consola ejecutando el programa desde el explorador. El código está en C y lo he reproducido aquí:

#include <windows.h> #include <stdio.h> #include <conio.h> CONSOLE_SCREEN_BUFFER_INFO csbi; HANDLE hStdOutput; BOOL bUsePause; void main(void) { hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE); if (!GetConsoleScreenBufferInfo(hStdOutput, &csbi)) { printf("GetConsoleScreenBufferInfo failed: %d/n", GetLastError()); return; } // if cursor position is (0,0) then use pause bUsePause = ((!csbi.dwCursorPosition.X) && (!csbi.dwCursorPosition.Y)); printf("Interesting information to read./n"); printf("More interesting information to read./n"); // only pause if running in separate console window. if (bUsePause) { int ch; printf("/n/tPress any key to exit.../n"); ch = getch(); } }

Lo he usado yo mismo y es una buena manera de hacerlo, solo bajo Windows por supuesto. Tenga en cuenta también que puede lograr esto de forma no programática en Windows iniciando su programa con este comando:

cmd /K consoleapp.exe

La forma incorrecta

No use ninguno de los siguientes para lograr esto:

system("PAUSE");

Esto ejecutará el comando de Windows ''pausa'' al generar un nuevo proceso cmd.exe / command.com dentro de su programa. Esto es totalmente innecesario y no portátil, ya que el comando de pausa es específico de Windows. Lamentablemente, he visto esto mucho.

getch();

Esto no es parte de la biblioteca estándar de C / C ++. Es solo una extensión del compilador y algunos compiladores no lo admiten.