Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调试控制台应用程序时,如何将VisualStudio中的stdin/stdout/stderr重定向到VisualStudio窗口? 我用VisualStudio.c编写C++中的跨平台应用程序。p>_C++_Windows_Visual Studio - Fatal编程技术网

调试控制台应用程序时,如何将VisualStudio中的stdin/stdout/stderr重定向到VisualStudio窗口? 我用VisualStudio.c编写C++中的跨平台应用程序。p>

调试控制台应用程序时,如何将VisualStudio中的stdin/stdout/stderr重定向到VisualStudio窗口? 我用VisualStudio.c编写C++中的跨平台应用程序。p>,c++,windows,visual-studio,C++,Windows,Visual Studio,我的项目类型是最基本的“Win32 console应用程序” 我承认,我还没有完全掌握windows软件开发,但似乎有一个明确的模式: 当您从CMD会话运行应用程序时,默认情况下,Windows会将应用程序的默认stdin/stdout/stderr连接到此CMD会话。 (即,当您在cmd会话中键入'dir'时,它不会启动新的cmd窗口。) 但是,从VS运行应用程序时并非如此。也就是说,当我按下F5时,它会启动一个新的控制台窗口,在该窗口内运行我的控制台应用程序,并将stdin/stdout/s

我的项目类型是最基本的“Win32 console应用程序”

我承认,我还没有完全掌握windows软件开发,但似乎有一个明确的模式:

当您从CMD会话运行应用程序时,默认情况下,Windows会将应用程序的默认stdin/stdout/stderr连接到此CMD会话。 (即,当您在cmd会话中键入'dir'时,它不会启动新的cmd窗口。)

但是,从VS运行应用程序时并非如此。也就是说,当我按下F5时,它会启动一个新的控制台窗口,在该窗口内运行我的控制台应用程序,并将stdin/stdout/stderr与该控制台窗口连接

我想要的是将stdin/stdout/stderr与VisualStudio内部的子窗口连接起来。(类似于“即时”窗口。) 这样我就不必在VS和CMD之间来回切换了

显然,应该有一些机制来实现这一点,因为通过普通的命令提示符,我可以执行以下操作:

a.exe 1>stdout.txt 2>stderr.txt <stdin.txt

a.exe 1>stdout.txt 2>stderr.txt Visual Studio不是CMD会话,所以我不明白为什么会出现这种情况!您似乎了解Shell是如何工作的。VS需要启动一个shell来运行您的程序。无论如何,从技术上讲,可以将TTY的I/O管道连接到VS内部的某些东西,但我不知道VS是否实现了该功能。我怀疑这一点。你为什么认为你需要这个?为什么不能像其他人一样使用IDE?“在cmd会话中键入'dir'时,它不会启动新的cmd窗口”-dir命令由命令解释器实现。它不是一个独立的应用程序。这可能会使程序表现出不同的行为,这不是调试器中需要的那种东西。@HarryJohnston问题是,我实际上不打算在控制台窗口中运行这个二进制文件。我将只将其作为后端使用,其stdin/stdout通过管道传输到调用程序。(就像一个GUI前端调用后端。)事实上,这通常不是在Windows中实现后端的最佳方式。考虑把它变成一个DLL。无论如何,没有直接的方法来满足您的要求,即使有,您仍然可以确保前端应用程序的行为与Visual Studio完全相同。最好通过前端运行后端,并手动将调试器连接到后端。(事实上,我认为您可以自动化该过程,但我不确定细节。)