cout
現在、MathWorksでは、MATLABデスクトップが開いているときにmexファイルから使用することはできません。これは、stdoutがリダイレクトされているためです。現在の回避策は、代わりに使用するように要求する関数mexPrintfを提供することです。少し調べてみると、std::stringbuf
クラスを拡張して必要なことをすることができると思います。これが私がこれまでに持っているものです。これは十分に堅牢ですか、それともオーバーロードする必要がある他の方法やこれを行うためのより良い方法がありますか?std::cout
(一般的なUNIX環境での移植性と、このコードがmex実行可能ファイルに対してリンクされていない場合に通常どおりに使用できる機能を探しています)
class mstream : public stringbuf {
public:
virtual streamsize xsputn(const char *s, std::streamsize n)
{
mexPrintf("*s",s,n);
return basic_streambuf<char, std::char_traits<char>>::xsputn(s,n);
}
};
mstream mout;
outbuf = cout.rdbuf(mout.rdbuf());