如何处理命令行参数

How to process command line arguments?

本文关键字:命令行 参数 处理 何处理      更新时间:2023-10-16

昨天我用c++编写了一个简单的程序,它使用通过命令行传递的参数。

E.G. myDrive:myPathmyProgram.exe firstWord secondWord

程序运行良好,做它必须做的,但我有一点好奇:我必须先写好argc --;,然后才能很好地使用它,否则我就会出现运行时崩溃[编译器不会说话!]。

特别是argc给了我一个糟糕的时间,当我没有给任何单词作为参数的程序,当我运行它…

现在它工作了,所以一点也不坏,但我想知道为什么会发生这种情况!(注:制作argc --;并打印,得到0作为值!)

编辑:这里所有使用argc

的指令
int main(int argc, char *argv[]) {
    [...]
    argc --;
    if(argc > 0){
        if(firstArg.find_last_of(".txt") != string::npos){
            reading.open(argv[1], ios::binary);
            [...]
        }
    }
    if ((!(firstArg.find_last_of(".txt") != string::npos)) && argc > 0){
    [...]
        for(int i = 1; i <= argc; i ++){
        [...]
        toTranslate = argv[i][j];
        [...]
        toTranslate = argv[i][j];
        }
    }
}

参数还包括程序本身的名称,因此argc总是至少为1。

下面是典型的循环:
int main(int argc, char * argv[])
{
    for (int i = 0; i != argc; ++i)
    {
        std::cout << "Argument #" << i << ": " << argv[i] << "n";
    }
}

或者你可以倒着打印:

while (argc--)
{
    std::cout << argv[argc] << "n";
}