命令行参数未分配给变量

时间:2013-11-08 03:51:07

标签: command-line

我正在尝试创建一个简单的c ++程序,它接受命令行参数并使用它们来定义两个整数。用户将键入'-f [number] -s [number]',这将指定int f等于-f之后的数字,int s等于-s之后的数字。

目前,无论我使用什么数字作为参数,当我打印结果时,f总是0而s总是4196288.有人能给我一个关于这里发生了什么的提示吗?

#include <iostream>
#include <stdlib.h>
#include <sstream>

using namespace std;

int main(int argc, char* argv[]) {
    int f, s;

    if (argc < 5) {
            cout << "USAGE: " << argv[0] << " -f <number> -s <number>" << endl;
            return 0;
    } else {
            for (int i = 1; i < argc; i++) {
                    if (argv[i] == "-f") {
                            f = atoi(argv[i + 1]);
                    } else if (argv[i] == "-s") {
                            s = atoi(argv[i + 1]);
                    }
            }

    cout << f << endl;
    cout << s << endl;

    }
    return 0;
 }

1 个答案:

答案 0 :(得分:0)

使用strcmp()来比较char *:

        for (int i = 1; i < argc; i++) {
                if (strcmp(argv[i], "-f") == 0) {
                        f = atoi(argv[i + 1]);
                } else if (strcmp(argv[i], "-s") == 0) {
                        s = atoi(argv[i + 1]);
                }
        }

并且,要解析命令行参数,如果不是你的作业,getopt()是更好的选择。