从字符串文字转换为char*

Conversion from string literal to char *

本文关键字:char 转换 字符串 文字      更新时间:2023-10-16

我正试图让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站点下载了它。我不愿意对公开的代码做太多的更改,因为我害怕引入错误。然而,这个错误出现在我正在处理的程序中的许多函数上

我该如何解决此问题?

您的函数采用"char*",而不是"const char*"。字符串文字只能分配给"const char*"。

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

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

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

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

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声明为"constchar*",这将不起作用。