C консольное приложение не закрывалось
Это, вероятно, смущающий вопрос, так как, несомненно, ответ очевиден.
Я использовал Visual Studio много лет, но впервые я разрабатывал «Консольное приложение».
Когда я запускаю свое приложение, всплывает окно консоли, появляется вывод программы, а затем окно закрывается при выходе из приложения.
Есть ли способ оставить его открытым, пока я не проверил вывод, или просмотреть результаты после закрытия окна?
Согласовано. Я думаю, что лучший ответ для VS 2017 и новее - это chronoxor.Если вы запускаете без отладки (Ctrl + F5), то по умолчанию он предлагает нажать клавишу возврата, чтобы закрыть окно. Если вы хотите использовать отладчик, вы должны поставить точку останова на последней строке.
Если у вас есть приложение на C ++ и «Выполнить без отладки», а окно консоли по-прежнему закрывается, вам нужно не забыть явно установить для Подсистемы значение «Консоль» в разделе «Свойства конфигурации / Linker / System». Это может произойти, если вы начинаете с пустого проекта, который оставляет подсистему неустановленной. У меня не сработало :( Окно консоли открывается и сразу закрывается, но журнал останавливается и ждет дополнительного нажатия F5 Правильный ответ - @TrevorRobinson: вот расширенная версия, если у вас возникли проблемы с поиском свойств конфигурации: щелкните правой кнопкой мыши свой проект в Visual Studio> Свойства> Свойства конфигурации> Линкер> Система, измените Подсистему на " Консоль " Тревор Робинсон прав. Если вы запускаете пустой проект и C ++ элемент. Вам нужно перейти в View-> Property Manager-> Property (значок гаечного ключа) -> Config. Свойства-> Линкер-> Система-> Подсистема-> во всплывающем меню выберите Консоль. Я работаю над сообществом VS 2017. ctrl+f5 не работает, нет, Properties когда я щелкаю правой кнопкой мыши проект, также wrench icon серый цвет.Щелкните правой кнопкой мыши по вашему проекту
Свойства> Свойства конфигурации> Линкер> Система
Выберите Console (/ SUBSYSTEM: CONSOLE) в SubSystem опции или вы можете просто ввести Console в текстовое поле!
Теперь попробуйте . это должно работать
Это сработало для моего VS2013 Express, но принятого ответа нет. Очень странно, поскольку принятый ответ работал для всех версий Visual Studio, которые я использовал в прошлом. @MichaelCalvin Вы должны запустить с Ctrl + F5 после установки этого, это кикер. как сказал @JonathanMee, вы все еще используете Ctrl + F5. Это было уже установлено в моей визуальной студии 2015, поэтому первым ответом был тот, который помог больше всего. Это действительно правильно. Знакомый CTRL+F5 потерпит неудачу, если вы, скажем, добавите новый файл C ++ в пустой проект. Работал для меня на Visual Studio Express 2015. Спасибо.Вот способ для C / C ++:
Я не включил ни одну библиотеку или пространство имен, но он работает правильно, большое спасибо. Не делай этого, пожалуйста. Команда pause зависит от Windows.Перейти к меню отладки-> Нажмите Пуск без отладки
Если у вас есть несколько проектов, установите соответствующий в качестве стартового проектаЭто будет ждать <ENTER> .
+1 - Либо это, либо Console.ReadKey() просто ждать любую клавишу. Странно, это не влияет на мое приложение. Он по-прежнему закрывается без ожидания ввода пользователя. Тогда ваш код, скорее всего, завершается до того, как достигнет этой точки.Начиная с Visual Studio 2017 (15.9.4) существует опция:
Я только что проверил это в VS2017 и VS2019. Это требует как установки подсистемы на CONSOLE, так и отключения этой опции. Наличие одного или другого или ни того, ни другого не закрывает окно автоматически. Это все еще закрывает окно для меня, если я запускаю несколько проектов из одного решения. Я чувствую, что это правильный ответ для VS 2017 и вперед. Жаль, что это не в старых версиях.Автоматически закрывать консоль при остановке отладки:
Сообщает Visual Studio закрыть консоль в конце сеанса отладки.
Попробуйте позвонить getchar() прямо до main() возвращения.
Не работает в VS 2008 для простого консольного приложения Hello Name. cout, cin, cout, getchar (), консоль все еще закрывается. В чем дело? Попробуйте поставить getchar () дважды, если у вас есть cout перед getchar (). getchar () ожидает char, а вы уже передаете его cout . Дайте мне знать, если это поможет :)(/ SUBSYSTEM: CONSOLE) не работал для моего vs2013 (он у меня уже был).
«запустить без отладки» не вариант, так как я не хочу переключаться между отладкой и просмотром вывода.
Решение, используемое в qtcreator pre 2.6. Теперь, когда Qt растет, Vs идет другим путем. Насколько я помню, в vs2008 нам не нужны были такие хитрости.
Вот решение, которое (1) не требует никаких изменений кода или точек останова, и (2) делает паузу после завершения программы, чтобы вы могли видеть все, что было напечатано. Он будет приостановлен после F5 или Ctrl + F5. Основным недостатком является то, что на VS2013 Express (как проверено) он не загружает символы, поэтому отладка очень ограничена.
Создайте командный файл. Я назвал мой runthenpause.bat со следующим содержанием:
Первая строка будет выполнять любую команду, которую вы предоставляете, и до восьми аргументов. Вторая строка будет . пауза.
Откройте свойства проекта | Свойства конфигурации | Отладка.
Теперь, когда вы запустите, runthenpause.bat запустите ваше приложение, и после того, как ваше приложение будет завершено, вы остановитесь, чтобы увидеть вывод консоли.
Я опубликую обновление, если выясню, как загрузить символы. Я пытался /Z7 по этому, но безуспешно.
Это наверное embarasing вопрос, без сомнения, ответ будет совершенно очевидной.
Я использовал Visual Studio в течение многих лет, но это первый раз, когда я сделал какую-либо разработку консольного приложения.
когда я запускаю приложение, появляется окно консоли, вывод программы, а затем окно закрывается по мере выхода приложения.
есть ли способ либо сохранить его открытым, пока я не проверил вывод, либо просмотреть результаты после окно закрыто?
Если вы работаете без отладки (Ctrl+F5), то по умолчанию он предлагает вам нажать return, чтобы закрыть окно. Если вы хотите использовать отладчик, вы должны поставить точку останова на последней строке.
Правой Кнопкой Мыши на вашем проекте
Свойства>Свойства Конфигурации> Компоновщик - > Система
выберите консоль (/SUBSYSTEM:CONSOLE) в .
теперь попробуйте. он должен работать
вот способ для C / C++:
Меню Отладки Goto ->пресс StartWithoutDebugging
Он будет ждать <ENTER> .
попробуйте позвонить getchar() перед main() возвращает.
(/SUBSYSTEM:CONSOLE) не работал для моего vs2013 (у меня уже был).
"запуск без отладки" не является опцией, так как я не хочу переключаться между отладкой и просмотром вывода.
решение используется в qtcreator до 2.6. Теперь, когда qt растет, vs идет другим путем. Как я помню, в vs2008 нам не нужны такие фокусы.
вот решение, которое (1) не требует никаких изменений кода или точек останова и (2) приостанавливает после завершения работы программы так что вы можете видеть все это было напечатано. Он будет приостановлен после F5 или Ctrl+F5. Основным недостатком является то, что на VS2013 Express (как проверено) он не загружает символы, поэтому отладка очень ограничена.
создать пакетный файл. Я назвал свое runthenpause.bat , со следующими содержание:
в первой строке будет выполняться любая команда, которую вы предоставляете, и до восьми аргументов. Вторая строка будет. пауза.
откройте свойства проекта | свойства конфигурации | отладка.
теперь, когда вы бежите, runthenpause.bat запустит ваше приложение, и после того, как ваше приложение завершится, сделает паузу для вас, чтобы увидеть вывод консоли.
я опубликую обновление, если выясню, как загрузить символы. Я пытался!--5--> per этой но без успеха.
вы можете запустить исполняемый файл из командной строки. Таким образом, вы могли видеть все выходные. Или вы можете сделать что-то вроде этого:
и таким образом окно не будет закрываться, пока вы не введете данные для a переменной.
добавить "/ pause " в поле аргументы команды в разделе отладки в свойствах проекта.
просто нажмите CNTRL + F5, чтобы открыть его во внешнем окне командной строки (Visual Studio не имеет контроля над ним).
Если это не работает, добавьте следующее в конец вашего кода:
это ждать, пока вы нажмете клавишу, чтобы закрыть окно терминала, как только код достигнет конца.
Если вы хотите сделать это в нескольких местах, поставить выше код в метод (например, private void Pause() ) и вызов Pause() каждый раз, когда программа достигает возможного конец.
Как предотвратить закрытие окна консоли в Visual Studio C / C ++
Это, вероятно, неудобный вопрос, поскольку, без сомнения, ответ ослепляюще очевиден.
Когда я запускаю свое приложение, появляется окно консоли, появляется вывод программы, а затем окно закрывается при выходе из приложения.
Есть ли способ оставить его открытым, пока я не проверю вывод, или просмотреть результаты после закрытия окна?
- Monodevelop делает то, что вы ожидаете.
- Согласовано. Я думаю, что лучший ответ для VS 2017 и новее - от chronoxor.
Начиная с Visual Studio 2017 (15.9.4) есть возможность:
Соответствующий фрагмент из документации Visual Studio:
Автоматически закрывать консоль при остановке отладки:
Сообщает Visual Studio закрыть консоль в конце сеанса отладки.
- 4 Я только что протестировал это в VS2017 и VS2019. Это требует как настройки подсистемы на КОНСОЛЬ, так и выключения этой опции. При наличии одного или другого окно автоматически закрывается.
- Это по-прежнему закрывает для меня окно, если я запускаю несколько проектов из одного решения.
- Я чувствую, что это правильный ответ для VS 2017 и последующих лет. Жаль, что этого нет в старых версиях.
Если вы запускаете без отладки (Ctrl + F5), то по умолчанию он предлагает вам нажать клавишу возврата, чтобы закрыть окно. Если вы хотите использовать отладчик, вы должны поставить точку останова на последней строке.
Щелкните правой кнопкой мыши свой проект
Свойства> Свойства конфигурации> Компоновщик> Система
Выбрать Консоль (/ SUBSYSTEM: CONSOLE) в SubSystem вариант или вы можете просто ввести Приставка в текстовом поле!
Теперь попробуйте . он должен работать
- Это сработало для моего VS2013 Express, но принятый ответ - нет. Очень странно, поскольку принятый ответ работал для всех версий Visual Studio, которые я использовал в прошлом.
- 9 @MichaelCalvin Вы должны запустить с Ctrl + F5 после установки этого, это кикер.
- как заявил @JonathanMee, вы все еще использовали Ctrl + F5. Это уже было установлено в моей визуальной студии 2015, поэтому первый ответ оказался наиболее полезным.
- Это действительно так. Знакомый CTRL+F5 не удастся, если вы, скажем, добавите новый файл C ++ в пустой проект.
- У меня работал над Visual Studio Express 2015. Спасибо.
Вот способ для C / C ++:
- Этот метод не работает в Visual C ++ (если вы не добавили заголовок?)
- 2 @wmac Вы должны включить заголовок windows.h
- 1 Я не включил ни одну библиотеку или пространство имен, но оно работает правильно, большое спасибо.
- 1 Не делай этого, пожалуйста. В pause команда специфична для Windows.
- У меня работал над Visual Studio 2013 Express. :)
Перейти к меню отладки->Нажмите StartWithoutDebugging
- 10 +1 - Либо это, либо Console.ReadKey() просто ждать любой клавиши.
- Странно, но в моем приложении это не действует. Он по-прежнему закрывается, не дожидаясь ввода данных пользователем.
- 4 Тогда ваш код, скорее всего, завершится до того, как достигнет этой точки.
- Не лучшее решение, если вы запускаете тесты, так как они заставят ваши тесты зависать и никогда не завершаться.
Попробуйте позвонить getchar() прямо перед main() возвращается.
- Не работает в VS 2008 для простого консольного приложения Hello Name. cout, cin, cout, getchar (), консоль все еще закрывается. В чем дело?
- 1 Попробуйте поместить getchar () дважды, если у вас есть cout непосредственно перед getchar (). getchar () ожидает char, а вы уже даете его cout . Сообщите мне, поможет ли это :)
(/ SUBSYSTEM: CONSOLE) не работал для моего vs2013 (у меня он уже был).
"запускать без отладки" не вариант, так как я не хочу переключаться между отладкой и просмотром вывода.
Решение, используемое в qtcreator до 2.6. Теперь, когда qt растет, vs идет другим путем. Насколько я помню, в vs2008 нам такие ухищрения не понадобились.
Вот решение, которое (1) не требует изменений кода или точек останова и (2) приостанавливает работу после завершения программы чтобы вы могли видеть все это было напечатано. Он будет приостановлен после F5 или Ctrl + F5. Основным недостатком является то, что в VS2013 Express (как было проверено) он не загружает символы, поэтому отладка очень ограничена.
Создайте командный файл. Я позвонил своему runthenpause.bat , со следующим содержанием:
Первая строка будет запускать любую предоставленную вами команду и до восьми аргументов. Вторая строка . пауза.
Откройте свойства проекта | Свойства конфигурации | Отладка.
Теперь, когда ты бежишь, runthenpause.bat запустит ваше приложение и после его завершения остановится, чтобы вы могли увидеть вывод консоли.
Я опубликую обновление, если выясню, как загрузить символы. Я старался /Z7 за это, но безуспешно.
- 1 Это все еще не поддерживает отладку, но, по крайней мере, решает проблему отсутствия вывода, например. VLD, в отличие от все другие ответы.
просто введите в качестве последней строки кода:
Вы можете запустить исполняемый файл из командной строки. Таким образом, вы могли видеть весь результат. Или вы можете сделать что-то вроде этого:
и таким образом окно не закроется, пока вы не введете данные для a переменная.
- 4 Это было бы отличным решением, если бы оно работало. pause похоже, работает только в пакетных файлах, и хотя он получает ввод от вашей программы на STDIN, он не распечатывает этот текст повторно. Я пробовал заменить | с участием && , но это не повлияло - предположительно, потому что он не выполняется с помощью командной оболочки (cmd.exe).
Просто нажмите CNTRL + F5, чтобы открыть его во внешнем окне командной строки (Visual Studio не контролирует его).
Если это не сработает, добавьте в конец кода следующее:
Это ждет, пока вы нажмете клавишу, чтобы закрыть окно терминала, когда код достигнет конца.
Если вы хотите сделать это в нескольких местах, поместите приведенный выше код в метод (например, private void Pause() ) и звоните Pause() всякий раз, когда программа достигает возможного конца.
Несколько лучшее решение:
в начале вашей программы.
- можно использовать std :: exit ()
- может иметь несколько возвратов из основного
- вы можете запустить свою программу под отладчиком
- Независимость от IDE (+ независимость от ОС, если вы используете cin.sync(); cin.ignore(); трюк вместо system('pause'); )
- нужно изменить код
- не будет останавливаться на std :: terminate ()
- все равно будет происходить в вашей программе вне сеанса IDE / отладчика; вы можете предотвратить это в Windows, используя:
- Очень плохой совет.
- Можете объяснить почему?
- В случае, когда отладка не ведется, она не делает ничего полезного, потому что в этом случае нет проблемы, которую нужно решать. В VS просто запустите программу с помощью Ctrl + F5 и все, так что в VS нет проблем, а в интерпретаторе команд нет проблем, короче говоря, нет проблем. А в случае, когда кто-то отлаживает и хочет, чтобы код остановки остановился, это не более удобное решение, чем точка останова, и вмешивается в ситуации, когда остановка не нужна.
Обязательно сделайте любой из них в конце main() функция и до return заявление.
Вы также можете использовать эту опцию
Visual Studio 2015, с участием импорт. Потому что я ненавижу, когда примеры кода не дают необходимого импорта.
Перейдите в Настройки> Отладка> Снять галочку рядом.
В настоящее время нет возможности сделать это с приложениями, работающими в WSL2. Однако есть два обходных пути:
В окне отладки сохраняется содержимое закрытого окна оболочки WSL.
Окно остается открытым, если ваше приложение возвращает ненулевой код возврата, поэтому, например, вы можете вернуть ненулевой код в отладочных сборках.
в последнее время я пытаюсь изучить C++ от этот сайт. К сожалению, всякий раз, когда я пытаюсь запустить один из примеров кода, я вижу, что программа открывается примерно на полсекунды, а затем сразу закрывается. Есть ли способ остановить программу от немедленного закрытия, чтобы я мог видеть плоды своих усилий?
Если вы используете Visual Studio и запускаете консольное приложение из IDE:
клавишей CTRL-F5 (запуск без отладки) запустит приложение и будет держать окно консоли открытым, пока вы не нажмете любую клавишу.
Если вы используете Microsoft Visual C++ 2010 Express и столкнетесь с проблемой с CTRL+F5 не работает для сохранения консоли открытой после завершения программы, взгляните на этот поток MSDN.
вероятно, ваша IDE настроена на закрытие консоли после запуска CTRL+F5; фактически, "пустой проект" в Visual C++ 2010 закрывает консоль по умолчанию. Чтобы изменить это, сделайте так, как предложил модератор Microsoft:
пожалуйста, правильно щелкните имя проекта и перейдите на страницу свойства, разверните свойства конфигурации -> Компоновщик -> система, выберите консоль (/SUBSYSTEM:CONSOLE) в раскрывающемся списке подсистема. Потому что, по умолчанию, пустой проект не указывает его.
Я обычно просто ставлю точку останова на main() закрывающая фигурная скобка. Когда конец программы будет достигнут любыми средствами, точка останова ударит, и вы можете ALT-Tab в окно консоли для просмотра вывода.
Почему бы просто не запустить программу из консоли ie запустить программу из cmd.exe, если вы используете Windows. Таким образом, окно остается открытым после завершения программы.
[EDIT]: когда я использую KDevelop4, есть полноценный экземпляр Bash (Linux CLI), работающий на вкладке в нижней части IDE. Это то, что я использую в таких обстоятельствах.
перед окончанием кода вставьте следующую строку:
это будет держать консоль, пока вы не нажмете клавишу.
Если вы запускаете свой код из компетентной IDE, например Code:: Blocks, IDE будет управлять консолью, которую он использует для запуска кода, сохраняя ее открытой при закрытии приложения. Вы не хотите добавлять специальный код, чтобы держать консоль открытой, потому что это помешает ей работать правильно, когда вы используете ее для реального, вне IDE.
хорошо, я предполагаю, что вы находитесь на Windows, используя Visual Studio. зачем? Ну, потому что если вы находитесь на какой-то ОС Linux, то вы, вероятно, будете запускать его с консоли.
в любом случае, вы можете добавить дерьмо в конце вашей программы, как другие предлагают, или вы можете просто нажать CTRL + F5 (запуск без отладки)и Visual Studio оставит консоль после завершения.
другой вариант, если вы хотите запустить отладочную версию и не добавить хрень ваш код, чтобы открыть окно консоли (Пуск -> Выполнить -> cmd) и перейдите в папку отладка выходного каталога. Затем просто введите имя исполняемого файла, и он будет запускать программу отладки в консоли. Затем вы можете использовать приложение Visual Studio для процесса или что-то еще, если вы действительно хотите.
Если вы действительно отлаживаете приложение в Visual C++, нажмите F5 или зеленый треугольник на панели инструментов. Если вы на самом деле не отлаживаете его (у вас нет установленных точек останова), нажмите Ctrl+F5 или выберите "пуск без отладки" в меню (обычно это меню отладки, которое я согласен, сбивает с толку.) Это будет немного быстрее, и что более важно для вас, будет пауза в конце без необходимости изменения кода.
кроме того, откройте командную строку, перейдите в папка, в которой находится ваш exe, и запустите его, введя его имя. Таким образом, когда он закончит работу, командная строка не закрывается, и вы можете видеть вывод. Я предпочитаю оба этих метода для добавления кода, который останавливает приложение так же, как его закончил.
добавьте следующую строку в конце программы. Он будет пытаться захватить некоторую форму пользовательского ввода, таким образом, он останавливает консоль от автоматического закрытия.
Читайте также:
- Какими могут быть области применения мультимедиа приложений
- Кредит европа банк как оплатить кредит через приложение
- Как выглядит приложение к диплому о среднем профессиональном образовании
- Телефон не отвечает вызов был сделан с использованием приложения
- Как вернуть яндекс карты в прежний вид в телефоне