I have the need to send binary data to std::cout.  The hack that I've 
previously used on Windows is to include this line in my main.cpp file:

#ifdef WIN32
// Allows us to open standard input in binary mode by default                   
                                                                  
// See http://gnuwin32.sourceforge.net/compile.html for more                    
                                                                  
int _CRT_fmode = _O_BINARY;
#endif

Sadly, this does not seem to work for std::cout

I tried this:

        std::ofstream f;
        f.open("CON",std::ios_base:binary)
        f << "this is a bare nl: \n  see? No CR.\r\n";

But that didn't work. Actually, it was kind of weird --- the stdout couldn't be 
redirected --- it went to the console. And it didn't come out in binary.

I understand that I can open an iostream with the ios_base::binary flag. 
However it is not clear to me how to open stdout.


The _CRT_fmode trick does seem to work for a write() that I have to file 
descriptor 1, however.

        const char *buf = "this is a newline: \n  and this is both a cr and a 
newline: \r\n";
        write(1,buf,strlen(buf));

Can someone tell me:

1. Is it possible to write binary to std::cout ?
2. Is there a way to "re-open" std::cout?

Thanks,

Simson



_______________________________________________
mingw mailing list
[email protected]
https://admin.fedoraproject.org/mailman/listinfo/mingw

Reply via email to