2015-05-21 17 views
1

我知道我可以用!example.exe命令或system(example.exe)this question中列出的命令啓動可執行文件。但是,當我想將參數傳遞給C++程序時,我輸入的任何內容都被視爲一個字符串。我怎樣才能使用MATLAB變量?使用MATLAB變量作爲參數從MATLAB腳本啓動C++程序

例如,假設example.exe是下面的程序:

int main(int argc, char *argv[]){ 
    std::cout << argv[1] << std::endl;  
} 

當我把它從MATLAB爲!example.exe hi,我得到的輸出hi

但是,如果我的MATLAB腳本實際上是:

hi = 'HELLO!'; 
!example.exe hi 

我的輸出仍然是hi,但我希望它是HELLO!

我該怎麼做?

在此先感謝!

回答

2

您需要使用您的變量來創建一個字符串,然後使用eval運行它。例如:

n = 3; 
command = sprintf('!example.exe %i', n); 
eval(command) 
+0

感謝您的回答;這是有效的,但是你可以(或者任何人)對'system()'和'eval()'進行評論嗎?有什麼區別/什麼是首選功能? – marcman

+1

@marcman'eval()'可以運行任何Matlab命令。 'system()'專門用於對OS進行脫殼。在你的情況下,我認爲你使用哪一個並不重要。 – shoelzer

+0

它通常更好地[避免'eval'](http://blogs.mathworks.com/loren/2005/12/28/evading-eval/) –

2

不知道如果這是你在找什麼,但你可以使用sprintf把執行命令一起在一個字符串,然後傳遞到系統中。喜歡的東西:

hi = 'Hello!'; 
command = sprintf('example.exe %s', hi); 
system(command); 
1

只需使用字符串連接:

hi = 'HELLO!'; 
system(['example.exe ' hi]);