如何处理命令行参数?

时间:2013-05-04 14:38:42

标签: c++ command-line-arguments

昨天我在c ++中创建了一个使用通过命令行传递的参数的简单程序。

E.G. myDrive:\myPath\myProgram.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];
        }
    }
}

1 个答案:

答案 0 :(得分:5)

参数包括程序本身的名称,因此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";
}