Относится к:
Visual Studio имеет два способа запуска программы на C ++ для консоли Win32: «Запуск без отладки (Ctrl + F5)» и «Запуск отладки (F5)». Оба запустят отдельное консольное окно для программы. Если программа отправляет управляющие коды ANSI через cout
первое окно работает, как и ожидалось, но второе покажет коды в виде символов, а непечатные коды, такие как ESC, будут заменены знаком вопроса в поле.
Почему это отличается? Есть ли способ, чтобы заставить escape-коды ANSI вести себя нормально при отладке?
В документации 2015 года не указано, что существует ограничение (для более ранних версий требуется платная версия).
В Visual Studio вы можете использовать отладчик для подключения к работающему процессу, что позволит избежать проблемы — при условии, что ваша программа может инициализироваться и ждать, пока вы это сделаете.
Что касается того, почему это отличается, это, вероятно, потому, что отладчик перехватывает ввод / вывод программы, запущенной в окне консоли (и не позволяет ему изменять режимы ввода / вывода).
Дальнейшее чтение:
Из последующих комментариев @ Шон-Гуглер понял, что
Напомнив, что Windows 10 окно консоли интерпретирует escape-последовательности ANSI,
Одна из проблем при запуске консольного приложения из графического интерфейса (такого как Visual Studio) заключается в том, что приложению придется выполнить дополнительную работу для выделения консоли.
Дальнейшее чтение:
Других решений пока нет …