问题
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