我有(所有std)vector<string>
我想推入execl
,这样我的向量的每个成员都被传入为char*
。这是可能的,如果是这样,我该如何实现它?进入可变参数
Q
进入可变参数
-3
A
回答
0
不,这是不可能的,但你可以用execv
代替。 execl
需要可变长度l ist of arguments,而execv
需要ector(真的是C数组)。然而,您将不得不将您的std::vector<std::string>
转换为C数组字符串(char **
)。另外execv
需要以null结尾的数组,即数组的最后一个元素需要为空指针。但是,这样的事情应该工作:
int exec_my_vector(std::string path, std::vector<std::string> v)
{
const char *cv[v.size() + 1];
unsigned i;
for(i = 0; i < v.size(); i++)
cv[i] = v[i].c_str();
cv[i] = NULL;
return execv(path.c_str(), (char * const *)cv);
}
(免责声明:还有在execv
调用,不应该是必要的结束一个可怕的演员,但我不能想出办法解决它)
+1
同样值得一提的是,转换并不需要比指针本身更多的存储空间。可以通过在原始向量的每个元素上调用'c_str()'来填充它。 – StoryTeller
相关问题
- 1. 可变参数
- 2. 可变参数
- 3. 可变参数和“...”参数
- 4. 可变参数模板类 - 可变参数成员函数
- 5. 与可变参数
- 6. 参数可变性
- 7. 可变参数类?
- 8. RobotFramework:可变参数
- 9. Java的可变参数函数参数
- 10. 可变参数函数(不带参数!)
- 11. 可变参数可变参数模板模板
- 12. 转化Scala的可变参数为Java对象...可变参数
- 13. 将可变参数模板粘贴到可变参数
- 14. 可变参数宏:重用可变参数(Boost.Fusion)
- 15. 可变数量的参数
- 16. luabind - 可变参数个数
- 17. Smalltalk可变参数函数
- 18. F#可变函数参数
- 19. Java可变函数参数
- 20. 可变参数模板类用于对可变参数模板函数进行延期调用
- 21. __init__,继承和可变参数参数
- 22. 可变参数和空参数
- 23. Class.getMethod当参数是可变参数
- 24. AsyncTask可变参数参数的用途
- 25. 拆分可变参数模板参数
- 26. 迭代可变参数宏参数
- 27. 可变参数模板模板参数
- 28. 通用可变参数的参数
- 29. Ruby参数带可变参数的SyntaxError
- 30. 角2子参照可变进父
嗨!请参阅[问]以及如何创建[mcve]。你试过什么了? – msanford
将其转换为'char const *'的向量,并使用'execv'代替。 –