gpt4 book ai didi

c++ - execvp() 使用 vector

转载 作者:行者123 更新时间:2023-11-30 02:18:13 28 4
gpt4 key购买 nike

_arguments = std::vector<std::string *>();

我已经声明了上面的 vector ,我想将它用于 execvp()

int execvp(const char *file, char *const argv[]);

如何转换类型以适合此函数?

应该是这样的

execvp(_arguments[0], _arguments)

最佳答案

您将需要创建一个指向字符串数据的新指针数组,而不是指向 std::string 本身的指针。有很多方法可以做到这一点,但一个简单的方法是使用另一个 std::vector 和一个结构化的 for 循环:

assert(_arguments.size() > 0);  // else the executable will be invalid

std::vector<const char *> args;
args.reserve(_arguments.size() + 1);
for(string *sp: _arguments) {
args.push_back(sp->c_str());
}
args.push_back(nullptr); // needed to terminate the args list

execvp(args[0], args.data());

关于c++ - execvp() 使用 vector<string *>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52490877/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com