Thread overview | ||||||
---|---|---|---|---|---|---|
|
June 12, 2013 Redirecting C++ ostreams | ||||
---|---|---|---|---|
| ||||
Hey guys, I have something I am curious about, but haven't had much luck with when doing research and experimenting. Basically, I am working with a library that uses ostreams internally and I want to somehow redirect that to what ever stderr is pointing to. The reason I am trying to do this is because I was considering the user might want to have some sort of log they want error messages written to, and if they redirect stderr to a file I'd like the underlying ostreams to be directed to the same location. Any ideas or suggestions would be welcome! Thanks in advance |
June 12, 2013 Re: Redirecting C++ ostreams | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jeremy DeHaan | On Wednesday, 12 June 2013 at 04:05:22 UTC, Jeremy DeHaan wrote:
> Hey guys,
>
> I have something I am curious about, but haven't had much luck with when doing research and experimenting.
>
> Basically, I am working with a library that uses ostreams internally and I want to somehow redirect that to what ever stderr is pointing to.
>
> The reason I am trying to do this is because I was considering the user might want to have some sort of log they want error messages written to, and if they redirect stderr to a file I'd like the underlying ostreams to be directed to the same location.
>
> Any ideas or suggestions would be welcome!
>
> Thanks in advance
Do you have access to the source code of the library? Or are you
just linking to it?
|
June 13, 2013 Re: Redirecting C++ ostreams | ||||
---|---|---|---|---|
| ||||
Posted in reply to Craig Dillabaugh | On Wednesday, 12 June 2013 at 16:15:08 UTC, Craig Dillabaugh wrote:
>
> Do you have access to the source code of the library? Or are you
> just linking to it?
I do some-what.
I don't want to change the source code of the library itself, but I can change the C/C++ code of the binding that is used by D.
If nothing else, I suppose I could write to the ostream directly, but I thought that it would be nice to be able to use stderr in all of the D code.
|
June 14, 2013 Re: Redirecting C++ ostreams | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jeremy DeHaan | Not sure if anyone cares too much since I doubt this will come up very often, but on the off chance it does I came up with a solution that will at least work for me. In my C/C++ code I created two variables; std::ostringstream outputStream and std::string outputString. outputStream is what I used to redirect the underlying ostream, and then I made a function as follows: const char* getOutput() { outputString = outputStream.str(); outputStream.str(""); return outputString.c_str(); } And then in my D code(after linking it to my C code) I do one of these after I know something was written to the ostream: stderr.write(text(getOutput())); This way I can redirect stderr wherever I want and still send the contents of the ostream to the same place. |
Copyright © 1999-2021 by the D Language Foundation