Well, the subject says it all, basically.
I have a command-line utility that may be used interactively or in scripts, using pipes or i/o redirection. I am using cin
and cout
for i/o, and I want to write an extra EOL at the end if the output is console, so that user prompt will start from the next line. Within scripts this would be harmful.
Can I assume cin == 0, cout == 1
? I understand that there is no clean way to get the file descriptor of a stream. Or is it?
If using Linux (and probably other unixes, but definitely not Windows) you could try isatty.
There's no direct way of extracting the file descriptor from the C++ stream. However, since in a C++ program both cout as well as stdout
exist and work at the same time (C++ by default provides synchronisation between stdio and iostream methods), your best bet in my opinion is to do a isatty(fileno(stdout))
.
Make sure you #include <unistd.h>
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With