2014-04-11 36 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); 
} 

难道我误会你了?

相关问题