2014-04-11 37 views
0

背景:如何傳遞C++中的雙引號內的字符串

我正在使用Matlab和C++進行繪圖。在我現在的過程中,我需要使用matlab函數將一個變量傳遞給matlab,並且還需要一個字符串,它將在matlab環境中命名該變量。我打電話的功能是engPutVariable(ep, "varMatlab" , varC++)其中ep是類(matlab)引擎的對象,varC++是我傳遞的C++中的變量的名稱,varMatlab將存儲在matlab工作空間中時是同一變量的名稱。我使用的過程需要4行代碼來傳遞一個變量,它爲我傳遞的每個變量執行相同的工作,因此我想編寫一個函數,其中包含變量的名稱和C++中變量的名稱需要在「」引號中的matlab。

問:

由於功能要求裏面的「」(雙引號)要傳遞的變量的名稱,我想通過一個字符串,將採取varMatlab的地方引號內。我嘗試使用字符串本身插入「」,但似乎在這種情況下不起作用。任何幫助將非常有幫助。

我寫了下面的函數來做同樣的事情,但字符串name應該在我不知道如何傳遞的「」中。

void putVar(double* var,int N, string name, Engine *ep){ 
    double row = N, col = N; 
    mxArray *matlab = mxCreateDoubleMatrix(row, col, mxREAL); 
    double *pa = mxGetPr(matlab); 
    memcpy(pa, var, sizeof(double)*row*col); 
    engPutVariable(ep, "name" , matlab); 
} 

回答

1

我相信你對需要引號作爲字符串的一部分感到困惑。我認爲你需要的只是訪問C++字符串中的c字符串。擺脫引號,並嘗試name.c_str()

+0

謝謝,這正是我一直在尋找的!真的很有幫助.. – Pranav

1

插入「as \」。至於「是串一個特殊的符號,它需要被轉義。所以字符串‘Hello World’用引號看起來像在C++

std::cout << "\"Hello World\"\n"; 

問候 托比亞斯

1

你的意思是逃避? 「逃離」這個詞的意思在這種情況下:您不能使用的字符"作爲字符串becauase它是C++語言的一部分內容

所以,你必須逃生它,以使字符串字面包含。。 在這個例子中,你的代碼應該是這樣的:

void putVar(double* var,int N, string name, Engine *ep){ 
    double row = N, col = N; 
    mxArray *matlab = mxCreateDoubleMatrix(row, col, mxREAL); 
    double *pa = mxGetPr(matlab); 
    memcpy(pa, var, sizeof(double)*row*col); 
    engPutVariable(ep, "\"name\"" , matlab); 
} 

難道我誤會你了?

相關問題