Есть ли способ поймать stderr и stdout в Visual Studio?

Есть ли способ поймать stdout и stderr в Visual Studio? Например, когда я использую

cout <<"Hello world!"<< endl;

Появится черное окно и исчезнет. Это так быстро, что я не вижу этого. В среде IDE есть раздел вывода, но он позволяет мне выбирать вывод отображения из сборки и что-то еще, но без выбора stdout.

Обманное решение может быть вызвано

system("pause");

но это звучит не так. Я искал в опции, но я не могу найти элемент.

У кого-нибудь есть идея? Благодарю. Я просто начинаю использовать VS, а раньше я на Linux.

Ответы

Ответ 1

Вместо того, чтобы использовать команду "Начать отладку", если вы хотите проверить вывод, используйте "Начать без отладки". В общем, как я справляюсь с этим. Окно командной строки останется в силе, пока вы его не закроете. Если произошел сбой или что-то еще, вы всегда можете подключить Visual Studio к процессу или просто запустить его с помощью "Начать отладку".

Ответ 2

Перейдите в "Свойства проекта" → "Линкер" → "Система" → "Изменить подсистему" ​​на "Консоль".

Ответ 3

Не пытаясь перенаправить потоки stdin/err, есть несколько альтернатив, которые вы можете попробовать:

  • Откройте окно командной строки и cd в каталог вашего исполняемого файла будет создан, а затем запустит его оттуда.
  • Возможно, попробуйте использовать что-то вроде std:: cin.get(); или std:: cin.ignore(std:: cin.rdbuf() → in_avail() + 1); вместо системы ( "пауза" ).
  • Отобразить вывод в отладчике visual studio через OutputDebugString