如何将字符串数组转换为char **

时间:2019-01-30 01:18:35

标签: c++ c++11

我想在此处手动发送值

void processArgs(int argc, char** argv);

如果我这样发送

char* cwd[] = {"./comDaemon", "--loggg=pluginFramework:debug"};

parser->processArgs(2, cwd);

编译器显示警告为

警告:ISO C ++禁止将字符串常量转换为“ char *” [-Wwrite-strings]

 char* cwd[] = {"./comDaemon", "--loggg=pluginFramework:debug"};

2 个答案:

答案 0 :(得分:4)

其他人注意到,问题是您正在尝试将字符串文字(常量)传递给采用非常量char **参数的函数。如果要创建可传递给非常量arg函数的非常量字符串,则需要显式的char数组(可以使用字符串文字进行初始化):

char arg0[] = "./comDaemon";
char arg1[] = "--loggg=pluginFramework:debug";
char *cwd[] = { arg0, arg1 };

您甚至可以在一行上完成所有操作:

char arg0[] = "./comDaemon", arg1[] = "--loggg=pluginFramework:debug", *cwd[] = { arg0, arg1 };

答案 1 :(得分:3)

如果您要传递cwd的函数期望使用char **参数,而不是const char **,则有以下一种方法:

    char *cwd[] = { const_cast<char *>("value1"), const_cast<char *>("value2") };