如何将字符串向量传递给execv

新手上路,请多包涵

我发现构建程序参数列表的最简单方法是作为字符串向量。但是, execv 需要一个字符数组作为第二个参数。让它接受字符串向量的最简单方法是什么?

原文由 node ninja 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 489
1 个回答

execv() 只接受一个字符串指针数组。没有办法让它接受其他任何东西。它是一个标准接口,可以从每种托管语言调用,而不仅仅是 C++。

我已经测试过编译这个:

 std::vector<string> vector;
const char *programname = "abc";

const char **argv = new const char* [vector.size()+2];   // extra room for program name and sentinel
argv [0] = programname;         // by convention, argv[0] is program name
for (int j = 0;  j < vector.size()+1;  ++j)     // copy args
        argv [j+1] = vector[j] .c_str();

argv [vector.size()+1] = NULL;  // end of arguments sentinel is NULL

execv (programname, (char **)argv);

原文由 wallyk 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏