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

Argument parsing in C++ loop like in Python. Why doesn't it work?

本文关键字:参数 为什么 不起作用 C++ Python 像在 一样 循环      更新时间:2023-10-16

我试图创建一个像python一样( --tag-t及以后的值(创建C 参数解析系统,但是我的代码将行不通。我已经翻了一番,两倍进行检查,似乎没有任何问题。
基本上,它的作用是,它得到参数并通过它们循环,直到找到--dict-d的参数,然后将argument++保存在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;
}

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