この質問のロジックに従って、でカスタムを作成streambuf
しようとしていますRcpp
。誰かが私たちが次のようなことを書くことを可能にする基本的な振る舞いに貢献しました
Rcout << "some text" ;
ここで実装xsputn
し、関数overflow
にリダイレクトしRprintf
ます。
std::streamsize Rcpp::Rstreambuf::xsputn(const char *s, std::streamsize num ) {
Rprintf( "%.*s", num, s );
return num;
}
int Rcpp::Rstreambuf::overflow(int c ) {
if (c != EOF) {
Rprintf( "%.1s", &c );
}
return c;
}
フラッシングも実装したいと思います。つまり、次の構文をサポートします。
Rcout << "some text" << std::flush ;
flush
マニピュレータがカスタムストリームで機能するようにするには、どのメソッドを実装する必要がありますか?