Чтобы получить доступ к консоли под Windows, вы должны связать вашу программу как консольное приложение.В Visual C ++ это можно настроить в настройках проекта в разделе «Свойства конфигурации» / «Компоновщик» / «Система» / «Подсистема» = «Консоль».
При связывании приложения в качестве приложения-консолида не означает, что вы не можетеоткрой окно.Это просто означает: а) что у вашего процесса всегда будет окно консоли и б) что, например, cmd.exe выполнит его синхронно (= дождитесь его завершения, прежде чем продолжить выполнение сценария / снова отобразить приглашение).
Затем вы можете получить доступ к консоли обычным способом: используя std::cout
, printf
и т. Д.
AFAIK, нет (хорошего и простого) способа получить доступ к консоли, с которой было запущено приложение, если приложениебыл связан как оконное приложение.(IIRC, однако, вы можете выделить новую консоль, но я думаю, что это не то, что вам нужно).
РЕДАКТИРОВАТЬ: Если вы хотите распечатать некоторые сообщения на консоли, даже если вывод былперенаправленный, я предлагаю вам использовать std::cerr
для печати на «вывод ошибок».«Вывод ошибки» также по умолчанию используется для консоли, но это поток, отличный от «stdout», и обычно он не перенаправляется.Он может быть перенаправлен, но я думаю, что это хорошая возможность дать пользователям такую возможность, а не обходить никакие перенаправления путем печати непосредственно на консоль.
EDIT2: Когда мне нужно приложение «двойной режим», то есть приложение, которое может работать с графическим интерфейсом или в командной строке, я использую консольное приложение и вызываю FreeConsole (), чтобы избавиться от окна консоли, если выбрана версия графического интерфейса.через аргументы командной строки (например, не передавая никаких аргументов).Этот путь к консоли все равно будет отображаться на короткое время, если приложение запущено в режиме графического интерфейса пользователя (например, двойным щелчком в проводнике), но оно сразу же закрывается, чтобы не загромождать экран во время использования графического интерфейса.