命令行参数不是incrementinc argc

时间:2012-09-26 15:18:16

标签: c++ command-line command-line-arguments argument-passing

我是c ++的新手,我正在努力了解它是如何运作的。 所以我有下一个代码:

int _tmain(int argc, _TCHAR* argv[])
{
std::wcin.get();//for console window input
int i=1;
    // decode arguments
    if(argc < 2) {
        printf("You must provide at least one argument\n");
        exit(0);
    }
    // report settings
    for (;i<argc;i++) printf("Argument %d:%s\n",i,argv[i]);

return 0;
}

了解argc和argv的工作原理。 但是,无论我在控制台中输入多少个参数,argc都不会增加。 它仍然是1。 我知道argv [0]是程序名。我的输入类似于:“aaa bbb ccc ddd”。 我相信这个argc应该是5对吗? 我究竟做错了什么 ?为什么它不会增加?

谢谢。

2 个答案:

答案 0 :(得分:5)

好像你正在使用MSVS(签名为_tmain(int argc, _TCHAR* argv[]))。如果您正在从IDE运行代码,则需要在项目设置中指定参数,而不是命令行。

enter image description here

从命令行运行,如:

test.exe arg1 arg2

也可以正常使用。你正在做什么不会修改参数。

答案 1 :(得分:2)

调用wcin.get()不会影响argv或argc。参数在程序启动时的最开始指定。它们在命令行中指定,紧跟在程序名称后面,用空格分隔。