Hi all, another way is to define a new ostream as below. This is modified from an answer on stackoverflow, where someone ran into a similar problem with Matlab ( http://stackoverflow.com/questions/243696/correctly-over-loading-a-stringbuf-to-replace-cout-in-a-matlab-mex-file ). Using this code you can use something like in the regular way Rcout << "test" << std::endl;
Hope this helps, Jelmer library('inline') library('Rcpp') include_code <- ' #include <streambuf> #include <ostream> #include <Rcpp.h> // modified from // http://stackoverflow.com/questions/243696/correctly-over-loading-a-stringbuf-to-replace-cout-in-a-matlab-mex-file class Rstreambuf : public std::streambuf { public: protected: virtual std::streamsize xsputn( const char *s, std::streamsize n ); virtual int overflow( int c = EOF ); }; std::streamsize Rstreambuf::xsputn( const char *s, std::streamsize num ) { Rprintf( "%.*s", num, s ); return num; } int Rstreambuf::overflow( int c ) { if (c != EOF) { Rprintf( "%.1s", &c ); } return c; } class Rostream : public std::ostream { protected: Rstreambuf buf; public: Rostream() : std::ostream( &buf ) {} }; // declare global variable Rcout Rostream Rcout; ' example_class <- ' // Example class with two data members // and overloaded operator<< class Example { friend std::ostream& operator<<( std::ostream& out, const Example& ex ); private: double d_a; double d_b; public: Example( double _a, double _b ) : d_a( _a ), d_b( _b ) {}; }; std::ostream& operator<<( std::ostream& out, const Example& ex ) { out << "Example( " << ex.d_a << ", " << ex.d_b <<" )"; return out; } ' src_code <- ' Rcout << 1 << ", " << 2 << ", " << 3 << std::endl << "(" << 5 << ", 6)" << std::endl; double a = 1.234; int b = 3; std::string s( "test" ); Rcout << a << ", " << b << ", " << s << std::endl; Rcout << Example( 3.0, 4.0 ) << std::endl; return Rcpp::wrap<int>( 0 ); ' fun <- cxxfunction( signature(), body = src_code, includes = paste( include_code, example_class, sep='\n' ), plugin="Rcpp", verbose=TRUE ) fun() On Tue, Oct 18, 2011 at 06:54, Tim Jurka <timju...@gmail.com> wrote: > Hi Slava, > > One way to do it is to use Rprintf() the same way you'd use the standard > printf() command. > Best, > Tim > On Oct 17, 2011, at 10:52 PM, Slava Razbash wrote: > > Hello, > > What is the "correct" way to print text to R with Rcpp? I find that > "std::cout<<" will only work if i running R from a console. I am using > winXP. > > Best Regards, > > Slava > _______________________________________________ > Rcpp-devel mailing list > Rcpp-devel@lists.r-forge.r-project.org > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel > > > _______________________________________________ > Rcpp-devel mailing list > Rcpp-devel@lists.r-forge.r-project.org > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel > _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel