适用于:
Visual Studio有两种方法可以为Win32控制台运行C ++程序:“无需调试启动(Ctrl + F5)”和“启动调试(F5)”。两者都将为该程序启动一个单独的控制台窗口。如果程序通过cout
发送ANSI转义码,则第一个窗口按预期工作,但第二个窗口将代码显示为字符,不可打印的代码(例如ESC)替换为框中的问号。
为什么会有所不同?有没有办法让ANSI转义码在调试时正常运行?
答案 0 :(得分:1)
2015年文档并未说明存在限制(早期版本需要付费版本)。
使用Visual Studio,您可以使用调试器附加到正在运行的进程,这可以避免此问题 - 前提是您的程序可以初始化并等待您执行此操作。
至于为什么它不同,这可能是因为调试器正在拦截在控制台窗口中运行的程序的输入/输出(并阻止它改变I / O模式)。
进一步阅读:
根据后续评论,@ Sean-Gugler意识到了
提醒Windows 10 console window解释ANSI转义序列
从GUI(例如Visual Studio)启动控制台应用程序的一个问题是应用程序必须做一些额外的工作来分配控制台。
进一步阅读: