заставить программу на c ++ показывать «синхронизированный» вывод в командное окно MATLAB с помощью dos () - PullRequest
1 голос
/ 23 сентября 2011

Я выполняю скомпилированную программу на С ++ в MATLAB с dos('myprog.exe').myprog выводит некоторые данные, которые выводятся в командное окно MATLAB только после того, как myprog.exe завершает выполнение.

Есть ли способ заставить MATLAB печатать выходные данные, когда они создаются myprog.exe, а не в конце

1 Ответ

2 голосов
/ 23 сентября 2011

ОТВЕТ Убедитесь, что вы корректно очищаете выходные буферы в вашей программе на С ++. По моему опыту это иногда помогает вставить дополнительные команды очистки (не только команды конца строк) в ваш код:

std::cout << std::endl;

Примечание Вы также можете попытаться назвать свою программу так:

[status,result] = dos('myprog.exe','-echo') 
[status,result] = system('myprog.exe','-echo') 

Справка по matlab гласит: «echo» принудительно выводит вывод в командное окно, даже если он также присваивается переменной. »

Однако это может не сработать, потому что (опять же, помощь по методу MATLAB): "Консольные программы никогда не выполняются в фоновом режиме. Кроме того, программное обеспечение MATLAB всегда ожидает закрытия канала stdout, прежде чем продолжить выполнение." Это означает, что matlab может подождать, пока ваша программа завершит выполнение, прежде чем покажет вам консольный вывод. В этом случае вы ничего не можете с этим поделать.

...