我的应用程序有入口点
int main(int argc, char *argv[])
{
}
我需要将 *argv
数组扩展到 n+1
并附加一个值。例如,我需要附加 "-app_ver"
。
我是 C++ 的新手(具有 Java 背景)。我知道我不能改变数组大小,所以我需要任何解决方案(任何复制数组的方法等)
最佳答案
要复制您的 argv
,您可以使用指向 char
的指针的 std::vector
。
std::vector<const char*> new_argv(argv, argv + argc);
然后向其中添加新元素:
new_argv.push_back("-app_ver");
new_argv.push_back(nullptr); // or NULL if you are using an old compiler
然后用新数组替换argv
:
argv = new_argv.data(); // or &new_argv[0] if you are using an old compiler
argc = argc + 1;
注意:在普通参数的末尾,应该有一个空指针。它很少被使用(尽管它是标准所要求的);如果您确定您的进一步代码不使用它,并且您只想将一个元素添加到您的 argv
数组,您可以只覆盖空指针,而不使用任何替换 argv
。也就是说,忽略上面所有的代码,只需要这样做:
argv[argc++] = "-app_ver";
但是,这很危险 - 如果您决定再添加一个元素,它就会崩溃,如果某些代码要求在最后一个参数之后存在空指针,它可能会崩溃。
关于c++ - 如何将值附加到命令行参数数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43372267/