Is there a way to catch the stderr and stdout in Visual Studio?

[亡魂溺海] 提交于 2019-11-30 16:33:18

问题


Is there a way to catch the stdout and stderr in Visual Studio? For example, when I use

cout <<"Hello world!"<< endl;

A black window appears and disappears. It's so fast that I can't see it. There is a output section in the IDE but it only allow me to choose display output from build and something else but without the choice of stdout.

A cheating solution maybe calling

system("pause");

but it doesn't sound right. I searched in the option but I can't find an item.

Anyone has any idea? Thanks. I just start to use VS and I'm on Linux before.


回答1:


Rather than using the "Start Debugging" command, if you want to check the output, use "Start Without Debugging". That's generally how I handle it. The command prompt window will remain up until you close it. If there's a crash or something, you can always reattach Visual Studio to the process, or just run it with "Start Debugging".




回答2:


Go to Project Properties -> Linker -> System -> Change subsystem to Console.




回答3:


Without actually trying to redirect stdin/err streams, there are some alternatives you can try:

  • Open a command prompt window and cd to the directory your executable will be created in then run it from there.
  • Perhaps try using something like std::cin.get(); or std::cin.ignore(std::cin.rdbuf()->in_avail() + 1); instead of system("pause").
  • Display output in the visual studio debugger via OutputDebugString


来源:https://stackoverflow.com/questions/10238331/is-there-a-way-to-catch-the-stderr-and-stdout-in-visual-studio

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!