gpt4 book ai didi

c++ - 更改命令行参数 argv

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:48 26 4
gpt4 key购买 nike

我想修改或删除 argv 中的命令行参数。

//Somewhere near the top of main()

bool itemFound(false);
for(int i=1; i<argc; ++i) {
if(argv[i] == "--item") {
itemFound = true;
//And remove this item from the list
argv[i] = " "; //Try to remove be just inserting spaces over the arg
}
}

//Now, use argc/argv as normal, knowing that --item is not in there

但是,--item 仍然包含在列表中。

执行此操作的最佳方法是什么?

最佳答案

你试过调试吗?如果这样做,您会发现它从不尝试删除任何内容。您不能将字符串 (char*) 与简单的相等进行比较,因为实际上您是在比较指针,它们(几乎)永远不会相等。相反,您应该使用字符串比较函数,如下所示:

if (!strcmp(argv[i], "--item")) {

此外,由于您要覆盖参数,因此不需要使用很多空格,只需将其设置为空字符串即可 (argv[i] = "") ,或修改现有字符串使其为空 (argv[i][0] = 0)。或者,您可以移动其余的参数,这样就不会出现可能会混淆其余代码的空白。

关于c++ - 更改命令行参数 argv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17144037/

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