2013-07-10 127 views
0

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

“串”=> { “S”, “T”, “R”, “I”, “N”, “G”}

我能够创建一个char * *与上述数据,但将其转换为const char **我无法做到。编译器显然出错了。然后我创建了一个2维字符数组char input [string.size()] [2]。但有了这个我在失去了如何将它转换为const char **

UPDATE:此做了什么,我一直在寻找 - (为const char **)temp其中温度是char [大小] [2]

回答

0

你可以尝试使用const_cast指针的类型。

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

return 0; 
} 
0

如果我理解正确的,你有一个char**(从 一个char *[]?派生),并且要为其指定一个char const**或 用它来初始化char**。这是非法的,因为它会 突破常量:

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

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

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

你可能想:

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

甚至:

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

或者,也许是功能应采取char const* const* (如果它没有修改)。隐含地,char**将转换为 。

最后,如果它是一个传统的功能,其签名不能 修改,但实际上并没有做任何修改,就可以使用 const_cast强制编译器接受它。

+0

我无法修改签名。但是,这做了我正在寻找 - (const char **)temp temp是char [size] [2] – Jithin