我试图创建一个C ++参数解析系统,就像它在Python中一样(--tag或-t以及后面的值),但我的代码不起作用。我有双倍和三倍检查它,似乎没有任何错误。基本上,它的作用是获取参数并循环遍历它们直到它找到一个--dict或-d然后参数++保存在dict变量中。这是代码:
#include <iostream>
#include <string>
int main(int argc, char* argv[]) {
for(int i=0; i<argc; i++) {
std::cout<<i<<" - "<<argv[i]<<std::endl;
if (argv[i] == "--dict" || argv[i] == "-d") {
std::string dict = argv[i++];
std::cout<<"Dictionary: "<<dict<<std::endl;
}
}
return 0;
}
答案 0 :(得分:1)
argv[i] == "--dict"
正在比较指针(永远不会匹配)。您可以使用strcmp
比较指针内容,或将其转换为字符串并使用==
// Compare using strcmp
if (strcmp(argv[i], "--dict") == 0 || strcmp(argv[i], "-d") == 0)
// Compare using strings
std::string arg(argv[i]);
if (arg == "--dict" || arg == "-d") {