C ++ Parse命令行参数和bool

时间:2014-12-11 03:03:02

标签: c++ parsing command-line boolean

所以,我正在尝试添加允许我使用argv来允许三个命令行输入的内容。

这样:

./program input.dat (string input) 

这样(我假设)argv[0] = input.datargv[1] = string inputargue[2] = file output

......我不确定我是否正确解释,但这是我的最大努力。 我想要做的是有一个命令行输入,允许我喜欢,如果它说“加密”它使一个bool为真,如果我键入“解密”它将该bool设置为false。

2 个答案:

答案 0 :(得分:3)

bool encrypt;
std::string action(argv[2]);
if (action == "encrypt") {
    encrypt = true;
} else if (action == "decrypt") {
    encrypt = false;
} else {
    // Report invalid argument
}

答案 1 :(得分:0)

做你正在描述的事情:

int main(int argc, char** argv) {
    if (argc < 3) {
        // print usage here and return, since that's what you need.
    }

    const char* filename = argv[1];

    if (!strcmp(argv[2], "encrypt")) {
        // encrypt!
    }
    else if (!strcmp(argv[2], "decrypt")) {
        // decrypt!
    }
    else {
        // error!
    }
}

或者使用字符串:

std::string filename = argv[1];
std::string mode = argv[2];
if (mode == "encrypt") { 
    // etc.
}

你可以有很多args,没有什么可以阻止你打电话:

./program hi everybody this is a little excessive but just an example

此时,您将使用argc == 12进行调用,例如,argv[5]指向“&#34; a&#34;``。