从字符串文字转换为字符*

时间:2015-03-04 17:55:06

标签: c++ c c++11

我试图在一些公开的线性代数代码中使c函数起作用。

公开的原型是......

int ilaenv_(int *, char *, char *, int *, int *,int *, int *);

公开可用的代码具有函数调用...

nb = ilaenv_(&c__1, "DGEQRF", " ", m, n, &c_n1, &c_n1); 

其中m,n,c_1和c_n1是整数,

错误信息是。

C++ 11 does not allow conversation from string literal to char *.

我没有创建代码,而是从LAPACK网站下载代码。我不愿意对可能有效的公开代码进行太多更改,以免引入错误。但是,此错误出现在我正在处理的程序中的许多函数中。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:6)

为安全起见,您可以创建初始化为相同值的char数组,例如:

char dgeqrf[] = "DGEQRF";
char space[] = " ";

或者你可以查看函数的源代码;如果它实际上没有修改这些数组的内容,你可以将参数更改为const char *

答案 1 :(得分:4)

你的函数需要“char *”,而不是“const char *”。字符串文字只能分配给“const char *”。

答案 2 :(得分:1)

抱歉这么晚,我刚刚碰到这个问题。你可以试试这个,

string dgeqrf = "DGEQRF";

使用“const char *”的一个问题是像这样的代码,

string formatString;
switch (format)
{
    case FORMAT_RGB:  formatString = "RGB"; break;
    case FORMAT_RGBA: formatString = "RGBA"; break;
    case FORMAT_TP10: formatString = "TP10"; break;
    default:          formatString = "Unsupported"; break;
}

如果将formatString声明为“const char *”,则无效。