c++转换二维char数组const char**

c++ convert 2 dimensional char array const char**

本文关键字:char 数组 const 二维 转换 c++      更新时间:2023-10-16

我有一个函数,它将const**char作为函数参数。我必须调用这个函数的输入是一个字符串,我需要将其转换为const char**,其中每一行都是字符串的一个字符。

"string"=>{"s"、"t"、"r"、"i"、"n"、"g"}

我可以用上面的数据创建一个char**,但无法将其转换为constchar**。编译器显然出错了。然后我创建了一个二维字符数组char input[string.size()][2]

更新:这就是我想要的-(const char**)temp,其中temp是char[size][2]

您可以尝试使用const_cast作为指针的类型。

int main(int ac, char **av)
{
 const char **const_av = const_cast<const char **>(av);
 return 0;
}

如果我理解正确,您有一个char**(源自CCD_ 2?),并且您希望为其分配char const**或使用它来初始化CCD_ 4。这是违法的中断常量:

char const s[] = "abc";
char const** p = s;
char** q = p;           //  illegal without const_cast
char* ps = *q;          //  because it allows this
*ps = 'x';

你应该问问自己这里真正的恐慌是什么。如果你处理字符串文字,而不是:

char* s[] = { "abc", "123", "xyz" };

你可能想要:

char const* s[] = { "abc", "123", "xyz" };

甚至:

char const* const s[] = { "abc", "123", "xyz" };

或者,也许函数应该采用char const* const*(如果它不修改任何内容)。char**将转换为这是隐含的。

最后,如果它是一个遗留函数,则不能对其签名modify,但实际上不会修改任何内容,您可以使用const_cast强制编译器接受它。