Matlab與C/C++混合程式設計 重定向cout到Matlab命令視窗
阿新 • • 發佈:2020-07-05
利用MEX進行混合程式設計時,常常會用到 std::cout
,但是直接使用是不會在Matlab命令視窗顯示的,對cout進行重定向之後可以將顯示結果列印到Matlab的命令視窗,非常方便。
首先需要定義一個mstream類
class mstream : public std::streambuf { public: protected: virtual std::streamsize xsputn (const char *s, std::streamsize n) { mexPrintf ("%.*s", n, s); return n; } virtual int overflow (int c = EOF) { if (c != EOF) { mexPrintf ("%.1s", &c); } return 1; } };
之後在mexFunction中進行重定向:
void mexFunction (int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
mstream mout;
std::streambuf *outbuf = std::cout.rdbuf (&mout);//重定向cout
std::cout << "Hello World!" << std::endl;
std::cout.rdbuf (outbuf);//結束重定向
}
之後就可以愉快的使用std::cout