像在Python中一样在C ++循环中进行参数解析。为什么不起作用?

时间:2018-02-25 23:15:12

标签: c++ parsing arguments

我试图创建一个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;
    }

1 个答案:

答案 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") {