像在 Python 中一样C++循环中的参数解析。为什么不起作用?
Argument parsing in C++ loop like in Python. Why doesn't it work?
我试图创建一个像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") {
相关文章:
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 在C++中传递给函数时,为什么要指定数组大小作为参数
- 为什么 std::function 可以作为 std::not2 的参数?
- 当给定默认值时,为什么此模板参数推导失败
- 非类型指针和引用模板参数,以及在编译时如何/为什么解析它们.c++
- 为什么默认复制函数在按值发送参数时不调用?
- 为什么 std::绑定错误参数可以成功?
- 模板参数列表中的 false 在模板初始化期间计算为什么?
- 为什么我们不能重复使用具有不同模板参数的别名模板标识符?
- 为什么模板参数推导失败?
- 为什么我需要在成员发起器列表中重复基类的模板参数?
- 为什么我不能将引用作为 std::async 的函数参数传递
- 为什么可变参数函数不适用于模板
- 为什么即使我调用参数化构造函数也会调用默认构造函数?
- 为什么这个噪声函数不处理否定参数?
- 不可能:此指针作为默认参数.为什么
- 默认模板参数:为什么编译器抱怨没有指定模板参数
- C++数组作为参数 - 为什么只需要指定"outer"维度
- 函数重载std::函数参数:为什么从未调用const方法
- 使用 std::enable_if 作为 templ 时的默认模板参数.参数:为什么可以使用两个仅在enable_if参