Правильный путь
cin.get();
cin.get()
совместим с C ++ и переносим. Он извлечет следующий символ из стандартного ввода (стандартный ввод). Пользователь может нажать Enter, и ваша программа продолжит выполнение или прекратит работу в нашем случае.
Microsoft берет
У Microsoft есть статья базы знаний под названием Предотвращение исчезновения окна консоли . Он описывает, как приостановить выполнение только тогда, когда это необходимо, то есть только тогда, когда пользователь создал новое окно консоли, выполнив программу из проводника. Код на C, который я воспроизвел здесь:
#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();
}
}
Я сам использовал это, и это хороший способ сделать это, конечно, только под Windows. Также обратите внимание, что вы можете достичь этого непрограммически в Windows, запустив программу с помощью этой команды:
cmd /K consoleapp.exe
Неправильный путь
Не используйте одно из следующих действий для достижения этой цели:
system("PAUSE");
Это выполнит команду Windows 'pause', породив новый процесс cmd.exe / command.com в вашей программе. Это совершенно не нужно, а также не переносимо, поскольку команда pause зависит от Windows. К сожалению, я много видел это.
getch();
Это не является частью стандартной библиотеки C / C ++. Это просто расширение компилятора, и некоторые компиляторы не будут его поддерживать.