【发布时间】:2019-03-07 12:39:12
【问题描述】:
我对 cpp 还很陌生,我正在尝试做一个项目。它说代码必须以文件名作为参数,并将由以下人员运行:
./main -i filename
我编写了一个 for 循环,它将遍历参数列表以查找“-i”参数,以便确定文件名。但是这一行总是返回 false:
argv[i] == "-i"
下面是我的代码:
#include <string>
#include <iostream>
int main(int argc, char *argv[]) {
std::string test = argv[0];
for(int i = 0; i < argc; i++){
if(argv[i] == "-i"){
test = argv[i+1];
break;
}
}
std::cout << test;
return 1;
}
【问题讨论】:
-
我了解到您正在编写自己的解析器以用于学习目的。一旦你知道如何去做并且你理解了实现它的路径,看看这里。 gnu.org/software/libc/manual/html_node/…
-
使用函数 strcmp 而不是 "argv[i] == "-i"",这是你在 C 中比较两个字符串的方式,而在你的代码中,“==”的两边会衰减指向指针。
标签: c++ g++ command-line-arguments