如何在C++/Windows中输出到控制台

Xun*_*nil 15 c++ windows console iostream sdl

在Linux上使用C++中的iostream时,它会在终端中显示程序输出,但在Windows中,它只是将输出保存到stdout.txt文件中.如何在Windows中使输出显示在控制台中?

MSN*_*MSN 16

既然你提到了stdout.txt我就谷歌了,看看究竟会创建一个stdout.txt; 通常情况下,即使使用Windows应用程序,控制台输出也会转到分配的控制台,如果没有分配,则无处可去.

因此,假设您正在使用SDL(这是唯一提出stdout.txt的内容),您应该遵循此处的建议.freopen stdout和带有"CON"的stderr,或者执行其他链接器/编译变通.

如果链接再次被破坏,这里正是从libSDL引用的:

如何避免创建stdout.txt和stderr.txt?

"我相信在SDL附带的Visual C++项目中,有一个SDL_nostdio目标>你可以构建你想要的东西(TM)."

"如果您定义"NO_STDIO_REDIRECT"并重新编译SDL,我认为它将解决问题." >>(答案由Bill Kendrick提供)


Sea*_*ean 7

要在Visual Studio中进行调试,可以打印到调试控制台:

OutputDebugStringW(L"My output string.");
Run Code Online (Sandbox Code Playgroud)


Bri*_*ndy 6

如果您使用的是 Visual Studio,则需要修改项目属性Configuration Properties -> Linker -> System -> SubSystem

这应该设置为:控制台(/SUBSYSTEM:CONSOLE)

此外,您应该将 WinMain 更改为此签名:

int main(int argc, char **argv)
{
    //...
    return 0;
}
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您有非控制台Windows应用程序,则可以使用AllocConsole功能创建控制台.一旦创建,您可以使用普通的std :: cout方法写入它.