C++ 解析命令行参数和布尔值

C++ Parse command line parameters and bool

本文关键字:布尔值 参数 命令行 C++      更新时间:2023-10-16

所以,我正在尝试添加一些东西,允许我使用 argv 允许三个命令行输入。

这样:

./program input.dat (string input) 

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

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

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

要执行您所描述的操作:

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.
}

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

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

此时,你会被调用argc == 12,例如,argv[5]指向"a"。