   C++: No output from cout object
  I am using Visual C++ 2008 Express Edition, and I am new to it. Just to test the water, I wrote a simple Windows Form application. I also use cout object to output some strings. When I debugged it in IDE, I saw no string being outputted to the debug window of the IDE. When I ran the application from command windows, I didn't see any outputs in the command windows as well.So where the strings go? Any thought?   Thank you!The codes are very simple:#include <iostream> using namespace std;void CTest::Dump (void){ cout << "\r\n Test the water!";}   
  By default std::cout outputs to the standard output handle. However, an application running in the Windows subsystem doesn't have standard out hooked up to anything. You could create a console with AllocConsole() and then redirect standard out to that console window. Ex:AllocConsole();freopen("conin$","r",stdin);freopen("conout$","w",stdout);freopen("conout$","w",stderr);;  If you want to write stuff to the debug window of VS, you need to use the OutputDebugString function.   ;  Try this:std::cout << "\r\n Test the water!" << std::flush;;  To expand on rozz' post: Most likely, your strings are caught in some stream buffer which is not being flushed at exit of your program.Using std::flush flushes these buffers explicitly. Outputting std::endl flushes the buffers implicitly (and creates a linebreak).Finally, note that "\r\n" is non-standard. If your streams are opened in text mode (which they should be), a single "\n" will do the job, though it is more idiomatic to use std::endl.   ;  Thank you fopr your help. Here aqre some updates.1) Method 1 works.AllocConsole();freopen("conin$","r",stdin);freopen("conout$","w",stdout);freopen("conout$","w",stderr);printf ("\r\n Test");2) Method 2 passed the compilation, but still no outputOutputDebugString (_T("\r\nTest"));;Quote:Original post by PrefectTo expand on rozz' post: Most likely, your strings are caught in some stream buffer which is not being flushed at exit of your program.Using std::flush flushes these buffers explicitly. Outputting std::endl flushes the buffers implicitly (and creates a linebreak).Finally, note that "\r\n" is non-standard. If your streams are opened in text mode (which they should be), a single "\n" will do the job, though it is more idiomatic to use std::endl.I tried both std::endl and std::flush, and one of them could make the outputs visible. Thanks anyway.   ;  I wonder though, why would the program exit so abruptly that flushing is necessary. If it is for debugging, then you could use std::cerr which should flush each output automatically.Quote:though it is more idiomatic to use std::endlIs it, seeing that is doing more than is usually needed (flushing the stream) and is more to type?   ;  You need a debugger attched if you want to see output from OutputDebugString - did you start the program in debug mode from the IDE?   ;Quote: Is it, seeing that is doing more than is usually needed (flushing the stream) and is more to type? I would say more idiomatic yes, efficient no.   