On 6 May 2011 at 14:21, Sean Robert McGuffee wrote: | Hi, | | Sorry, I just tried posting this but I had it in the wrong format of text, | so this is a cleared format repost: | | I¹m trying to call some of my c++ code from R and seem to be having an issue | with streams, although that¹s just one obvious sign of something different | in performance between calling the same function from main in c++ vs. | calling the same function from R. I¹m not getting any signs of errors from | R, but the behavior is different somehow and in a way that breaks my | algorithms. In both cases of launching a function from c++ or R, I redirect | cout to a file using a streambuf. In particular, I can see progress stop | when launching from R at a point when cout gets truncated when starting to | write out iterator values in a std::vector<string>. Then, I find no way to | write anything else to cout. When I write those values to Rprintf, they are | there and they are as expected. I¹ve tried setting | ios_base::sync_with_stdio(false) in case R is messing with stdout and stderr | somehow, but that made no difference. I¹m not quite sure how R uses those C | FILE* streams. Anyway, I am wondering if anyone has a hunch as to what might | be going on. At this point I don¹t know if it might be an issue with R not | completely handling c++ from a library or if it is an issue with cout in | particular or if there is something else I¹m missing. Please let me know if | you have any suggestions for me.
Doug Bates sometimes remarks that, once all other alternatives are exhausted, one could consider reading the manual. And indeed, 'Writing R Extensions' has this to say: 5.6 Interfacing C++ code ======================== [...] Using C++ iostreams, as in this example, is best avoided. There is no guarantee that the output will appear in the R console, and indeed it will not on the R for Windows console. Use R code or the C entry points (*note Printing::) for all I/O if at all possible. In a nutshell, R 'owns' your console. That is part of the Faustian bargain. Dirk -- Gauss once played himself in a zero-sum game and won $50. -- #11 at http://www.gaussfacts.com ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel