MathWorks 目前不允许您cout
在 MATLAB 桌面打开时使用 mex 文件,因为它们已重定向标准输出。他们当前的解决方法是提供一个函数mexPrintf,他们要求您使用它。在谷歌搜索了一下之后,我认为可以扩展std::stringbuf
课程来做我需要的事情。这是我到目前为止所拥有的。这是否足够强大,还是我需要重载其他方法或更好的方法来做到这一点?std::cout
(如果此代码未链接到 mex 可执行文件,则在一般 UNIX 环境中寻找可移植性以及正常使用的能力)
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());