【发布时间】:2019-05-22 21:15:34
【问题描述】:
我想将一组参数传递给 exec() 函数。当前参数都是字符串。如何将字符串数组转换为 char 数组?
现在我正在使用 const_cast 来删除 const。代码看起来不太好。 有没有更好的解决方案?
示例代码如下:
void f(const string &dev, const string &status){
char* args[] = {"link", "set", "dev", const_cast<char*>(dev.c_str()),
const_cast<char*>(status.c_str())};
execv("/sbin/ip", args);
}
【问题讨论】:
-
为什么不在 iso 类型中添加 const 呢?
-
char* arg0 = "link"也应该是有问题的,因为const(或此处的演员)也丢失了...... -
我不确定,但
dev和status的生命周期在这里重要吗?您正在调用execv并使用std::string返回的字符串填充它,这些字符串在main退出后超出范围。 -
你可以按值取参数,而不是 const ref 吗? (一种删除
const的方法,如果在函数中完成了复制(如答案中所建议的,它可能会避免额外的副本)。