использование getch () для удержания командной строки в открытом Visual C ++ 2010 - PullRequest
1 голос
/ 21 сентября 2011

В настоящее время я изучаю c ++ из книги под названием «Ivor Hortons Beginning Visual C ++ 2010».

Во всех примерах, которые я пытался до сих пор, мне приходилось использовать getch (), чтобы держать командную строку открытой, и иногда удалять инструкцию return 0 из конца метода main.

Это каприз Windows 7, и это вызовет проблемы в дальнейшем? Сейчас это не проблема, но, поскольку это не включено в книгу, мне было интересно, может быть, я что-то настроил неправильно.

Большое спасибо:)

Ответы [ 4 ]

2 голосов
/ 12 июня 2013

Используйте _getch () вместо getch ()

1 голос
/ 21 сентября 2011

Когда программа заканчивается, любые ресурсы, созданные этой программой, включая окно терминала, будут освобождены.Используя getch, вы предотвращаете завершение программы.Это нормальное поведение, и оно должно продолжать работать до тех пор, пока Windows не станет удаленной памятью.

Если вы запустите программу из уже существующего командного окна, окно не закроется, потому что ононе был создан программой.

1 голос
/ 21 сентября 2011

getch() не зависит от операционной системы, но не является переносимым напрямую.Предпочтительный способ сделать это в C++ - это использовать std::cin.get();.

. Функция main может неявно return 0 (вам на самом деле не нужен этот код, см. Ниже).

int main()
{
   // valid, return 0 implied.
}

См. этот вопрос для получения более подробной информации о неявном return 0 из main.

0 голосов
/ 21 сентября 2011

Во-первых, getch() не является стандартной функцией C или C ++. Даже под Windows, я думаю, ее использование устарело; его семантика восходит к CP / M и ранняя MS-DOS.

Во-вторых, это действительно не нужно, по крайней мере, для консольных приложений (и Я не думаю, что это доступно для неконсольных приложений). Если вы бежите программа из окна консоли, окно остается открытым. И если ты запускать его из Visual Studios, тривиально установить точку останова на оператор return, который блокирует программу и держит окно открытым (хотя для IDE нет никаких оснований закрывать ее только потому, что ваша программа прекращена).

...