【发布时间】:2011-09-23 09:36:18
【问题描述】:
我正在使用dos('myprog.exe') 在 MATLAB 中执行我的 c++ 编译程序。 myprog 会产生一些输出,仅在 myprog.exe 完成执行后才会打印到 MATLAB 命令窗口。
有没有办法强制 MATLAB 在 myprog.exe 生成输出时而不是在最后打印输出?
【问题讨论】:
标签: matlab command-window
我正在使用dos('myprog.exe') 在 MATLAB 中执行我的 c++ 编译程序。 myprog 会产生一些输出,仅在 myprog.exe 完成执行后才会打印到 MATLAB 命令窗口。
有没有办法强制 MATLAB 在 myprog.exe 生成输出时而不是在最后打印输出?
【问题讨论】:
标签: matlab command-window
回答 确保正确刷新 c++ 程序中的输出缓冲区。根据我的经验,有时在代码中插入额外的刷新命令(不仅仅是行尾命令)会有所帮助:
std::cout << std::endl;
注意 你也可以尝试这样调用你的程序:
[status,result] = dos('myprog.exe','-echo')
[status,result] = system('myprog.exe','-echo')
matlab 帮助说:“'echo' 强制输出到命令行窗口,即使它也被分配到一个变量中。”
但这可能不起作用,因为(再次 matlab 帮助): “控制台程序永远不会在后台执行。此外,MATLAB 软件总是在继续执行之前等待标准输出管道关闭。” 这意味着,matlab 可能会等到您的程序完成执行后才会显示你控制台输出。在这种情况下,您无能为力。
【讨论】:
msbuild 输出显示正常?
std::endl(这也是一个冲洗器)替换一些换行符,它终于奏效了。第一次测试时我可能会出错。修改您的答案,以便我接受。