Visual studio консоль сразу закрывается
Это, вероятно, смущающий вопрос, так как, несомненно, ответ очевиден.
Я использовал 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() каждый раз, когда программа достигает возможного конец.
Теперь я просто попробовал Пример 1 (здесь - ссылка на MSDN ), и я столкнулся с проблемой: почему окно консоли сразу же закрывается после отображения моего вывода?
22 ответа
проблема в том, что их программа Hello World отображается, а затем немедленно закрывается.
это почему?
Потому что это завершено. Когда консольные приложения завершили выполнение и вернулись из своего метода main , соответствующее окно консоли автоматически закрывается. Это ожидаемое поведение.
Если вы хотите оставить его открытым для целей отладки, вам нужно указать компьютеру дождаться нажатия клавиши перед завершением работы приложения и закрытием окна.
Метод Console.ReadLine - это один из способов делая это. Добавление этой строки в конец вашего кода (непосредственно перед оператором return ) заставит приложение ждать, пока вы нажмете клавишу, перед выходом.
В качестве альтернативы вы можете запустить приложение без подключенного отладчика, нажав Ctrl + F5 из среды Visual Studio, но это имеет очевидный недостаток, который не позволяет вам использовать отладку. функции, которые вы, вероятно, захотите использовать при написании приложения.
Лучшим компромиссом, вероятно, является вызов метода Console.ReadLine только при отладке приложения путем включения его в директиву препроцессора. Что-то типа:
Вы также можете захотеть, чтобы окно оставалось открытым в случае возникновения неперехваченного исключения. Для этого вы можете поместить Console.ReadLine(); в блок finally :
По моему мнению, если мы хотим стабилизировать ВЫВОД КОНСОЛЬНОГО ПРИЛОЖЕНИЯ до закрытия вывода, отобразите USE, метку: после MainMethod и метку goto; до окончания программы
Если ваша программа требует, чтобы вы нажали Enter, чтобы продолжить, как если бы вам нужно было ввести значение и продолжить, добавьте новый тип double или int и введите write перед retunr (0); scanf_s ("% lf", & переменная);
Добавьте следующее перед возвращением 0:
Это печатает строку для нажатия клавиши, чтобы закрыть окно. Окно будет отображаться до тех пор, пока вы не нажмете клавишу ввода. Я прошу своих студентов добавить его во все свои программы.
Вы можете решить это очень простым способом, просто вызвав ввод. Однако, если вы нажмете Enter , консоль снова отключится. Просто используйте это Console.ReadLine(); или Console.Read();
Чтобы упростить то, что говорят другие: Используйте Console.ReadKey(); .
Это делает так, что программа ждет, когда пользователь нажмет обычную клавишу на клавиатуре.
Источник: использую в своих программах для консольных приложений.
Я всегда добавляю следующий оператор в консольное приложение. (Создайте для этого фрагмент кода, если хотите)
Это помогает, когда вы хотите поэкспериментировать с разными концепциями через консольное приложение.
Ctrl + F5 заставит консоль остаться, но вы не сможете отлаживать! Все консольные приложения, которые я написал в реальном мире, всегда не интерактивны и запускаются планировщиком, таким как TWS или CA Workstation, и не требуют чего-то подобного.
Инструменты -> Параметры -> Отладка -> Общие -> Автоматически закрывать консоль (5-я последняя опция)
Установите флажок и закройте
Это относилось ко всем проектам.
Что-либо, где бы то ни было в консольном приложении, никогда не используйте await , а вместо этого используйте theAsyncMethod().GetAwaiter().GetResult(); ,
Программа закрывается, как только завершится ее выполнение. В этом случае, когда вы return 0; . Это ожидаемая функциональность. Если вы хотите увидеть результат, либо запустите его в терминале вручную, либо установите ожидание в конце программы, чтобы оно оставалось открытым в течение нескольких секунд (с использованием библиотеки потоков).
Вот способ сделать это без участия Console :
Добавьте метод Read для отображения вывода.
Используйте Console.Read (); чтобы предотвратить закрытие программы, но убедитесь, что вы добавили код Console.Read(); перед оператором return, иначе это будет недостижимый код.
Код готов, чтобы продолжить, вам нужно добавить это:
Другой способ - использовать Debugger.Break() перед возвратом из метода Main
В качестве альтернативы вы можете отложить закрытие, используя следующий код:
Обратите внимание, что Sleep использует миллисекунды.
Если вы хотите, чтобы ваше приложение оставалось открытым, вам нужно что-то сделать, чтобы поддерживать его процесс. Приведенный ниже пример - самый простой, который можно поместить в конец вашей программы:
Однако это вызовет перегрузку процессора, так как он вынужден бесконечно повторяться.
На этом этапе вы можете выбрать использование класса System.Windows.Forms.Application (но для этого потребуется добавить ссылку System.Windows.Forms ):
Это не приводит к утечке ЦП и успешно работает.
Чтобы избежать добавления ссылки System.Windows.Forms , вы можете использовать простой трюк, так называемое ожидание вращения , импортировав System.Threading :
Это также отлично работает и в основном состоит из цикла while с отрицательным условием, которое возвращается указанным выше лямбда-методом. Почему это не перегружает процессор? Вы можете посмотреть исходный код здесь; в любом случае, он в основном ожидает некоторого цикла ЦП перед повторением.
Затем вы можете безопасно выполнить цикл, выполнив что-то вроде этого:
Программа немедленно закрывается, потому что ничто не мешает ей закрыться. Вставьте точку останова в return 0; или добавьте Console.Read(); перед return 0; , чтобы программа не закрывалась.
То же самое для Ctrl F5 или F5 . Поместите непосредственно перед концом метода Main .
Я предполагаю, что причина, по которой вы не хотите, чтобы он закрывался в режиме отладки, заключается в том, что вы хотите посмотреть значения переменных и т. Д. Так что, вероятно, лучше просто вставить точку останова на закрытии ">" основной функции . Если вам не нужно отлаживать, тогда Ctrl-F5 - лучший вариант.
Вместо того, чтобы использовать
Вы можете запустить свою программу, используя Ctrl + F5 (если вы находитесь в Visual Studio). Тогда Visual Studio будет держать окно консоли открытым, пока вы не нажмете клавишу.
Это, вероятно, вопрос о запуске, поскольку, несомненно, ответ ослепительно очевиден.
Я использовал Visual Studio в течение многих лет, но это первый раз, когда я создал любую консольную программу.
Когда я запускаю приложение, появляется окно консоли, появляется выход программы, а затем окно закрывается по мере выхода приложения.
Есть ли способ открыть его, пока я не проверил вывод или не просмотрел результаты после закрытия окна?
ОТВЕТЫ
Ответ 1
Если вы запускаете без отладки (Ctrl + F5), то по умолчанию он предлагает вам нажать return, чтобы закрыть окно. Если вы хотите использовать отладчик, вы должны поставить точку останова в последней строке.
Ответ 2
Щелкните правой кнопкой мыши на вашем проекте
Свойства> Свойства конфигурации> Линкер> Система
Выберите Console (/SUBSYSTEM: CONSOLE) в опции SubSystem или вы можете просто ввести Console в текстовое поле!
Теперь попробуйте. это должно работать
Ответ 3
Вот способ для C/С++:
Ответ 4
Откройте меню отладки- > Нажмите Начать без использования
Ответ 5
Он будет ждать <ENTER> .
Ответ 6
попробуйте вызвать getchar() прямо перед возвратом main() .
Ответ 7
(/SUBSYSTEM: CONSOLE) не работал для моего vs2013 (у меня его уже было).
"run without debugging" не является параметром, так как я не хочу переключаться между отладкой и просмотром вывода.
Решение, используемое в qtcreator до 2.6. Теперь, когда qt растет, vs идет другим путем. Насколько я помню, в vs2008 нам не нужны такие трюки.
Ответ 8
Здесь решение, что (1) не требует каких-либо изменений кода или точек останова, и (2) приостанавливается после завершения программы, чтобы вы могли видеть все, что было напечатано. Он остановится после F5 или Ctrl + F5. Основной недостаток заключается в том, что на VS2013 Express (как проверено) он не загружает символы, поэтому отладка очень ограничена.
Создайте командный файл. Я назвал мой runthenpause.bat со следующим содержимым:
Первая строка будет запускать любую команду, которую вы предоставляете, и до восьми аргументов. Вторая строка будет. пауза.
Откройте свойства проекта | Конфигурационные свойства | Отладка.
Теперь, когда вы запустите, runthenpause.bat запустит ваше приложение, и после того, как ваше приложение завершится, вы остановитесь, чтобы увидеть вывод консоли.
Я опубликую обновление, если выясню, как загрузить символы. Я пробовал /Z7 за этот, но безуспешно.
Ответ 9
просто введите свою последнюю строку кода:
Ответ 10
Начиная с Visual Studio 2017 (15.9.4) есть опция:
Автоматически закрывать консоль, когда отладка прекращается:
Сообщает Visual Studio закрыть консоль в конце сеанса отладки.
Ответ 11
Вы можете запустить исполняемый файл из командной строки. Таким образом, вы можете увидеть весь вывод. Или вы можете сделать что-то вроде этого:
и таким образом окно не будет закрываться, пока вы не введете данные для переменной a .
Ответ 12
добавить "| pause" в поле аргументов команды в разделе отладки в свойствах проекта.
Ответ 13
Просто нажмите CNTRL + F5, чтобы открыть его во внешнем окне командной строки (Visual Studio не контролирует его).
Если это не сработает, добавьте следующее в конец вашего кода:
Подождите, пока вы нажмете клавишу, чтобы закрыть окно терминала, как только код достигнет конца.
Если вы хотите сделать это в нескольких местах, поместите вышеуказанный код в метод (например, private void Pause() ) и вызовите Pause() всякий раз, когда программа достигает возможного конца.
Ответ 14
Несколько лучшее решение:
в начале вашей программы.
- может использовать std:: exit()
- может иметь несколько возвратов из основного
- вы можете запустить свою программу под отладчиком
- Независимый IDE (+ независимый от ОС, если вы используете трюк cin.sync(); cin.ignore(); вместо system("pause"); )
- необходимо изменить код
- не будет останавливаться на std:: terminate()
- все равно произойдет в вашей программе вне сеанса IDE/debugger; вы можете предотвратить это под Windows, используя:
Ответ 15
Обязательно сделайте любой из них в конце функции main() и перед оператором return .
Ответ 16
В моем случае я испытал это, когда создал проект Empty C++ в версии VS 2017 для сообщества. Вам нужно будет установить для подсистемы значение "Консоль (/SUBSYSTEM: CONSOLE)" в разделе "Свойства конфигурации".
- Зайдите в "Просмотр", затем выберите "Менеджер недвижимости"
- Щелкните правой кнопкой мыши на проекте/решении и выберите "Свойство". Откроется страница свойств теста.
- Перейдите к компоновщику, затем выберите "Система"
- Нажмите "Подсистема" и появится выпадающий
- Выберите "Консоль (/SUBSYSTEM: CONSOLE)"
- Применить и сохранить
- В следующий раз, когда вы запустите свой код с помощью "CTRL +F5", вы должны увидеть результат.
Ответ 17
Вы также можете использовать эту опцию
Ответ 18
Ответ 19
Visual Studio 2015, импорт. Потому что я ненавижу когда примеры кода не дают необходимых импортов.
Как предотвратить закрытие окна консоли в 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.
Окно остается открытым, если ваше приложение возвращает ненулевой код возврата, поэтому, например, вы можете вернуть ненулевой код в отладочных сборках.
Читайте также: