1

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

E.G. myDrive:\myPath\myProgram.exe firstWord secondWord

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

特别是argc当我在运行程序时不给任何词作为参数时给我带来了糟糕的时光......

现在它可以工作了,所以一点也不差,但我想知道为什么会这样![PS 制作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];
        }
    }
}
4

1 回答 1

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";
}
于 2013-05-04T14:42:53.447 回答