如何将字符串数组隐蔽为字符**

how to covert string array to char**

本文关键字:字符 数组 字符串      更新时间:2023-10-16

我想在这里手动发送值

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"};

其他人已经注意到,问题是你试图将字符串文字(是常量)传递给一个接受非常量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 };

如果您要传递cwd的函数需要char **参数,而不是const char ** ,这里有一种方法:

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