C++ 接收命令行参数

时间:2022-06-17 14:28:28
    用过C语言编程的人都知道,在C下的编程可以通过main函数的参数取得命令行参数的个数以及每个参数的字符串,例如

int main(int argv ,char *argv[])
{

}

    其中argc为命令参数个数(含自身文件名),而这些参数分别存储在argv[0]~argv[argc-1]中,其中argv[0]是可执行文件的名字(含路径)。

    那么Windows程序是怎么取得命令行参数的呢?   

    用C语言写过windows程序的人都知道,在windows程序的主函数WinMain()中,有一个参数lpszCmd,这个参数就是命令行参数。但我们在windows编程时一般都没在WinMain()函数工

作,再加上lpszCmd是整个命令行。

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{

...

}

     hInstance为应用程序句柄,hPrevInstance这个句柄在Win32下没啥用,兼容性的东东,不用管,lpCmdLine就是参数了,参数nCmdShow指定程序的窗口应该如何显示。

 如果你是使用的C Builder编程,那么我就恭喜你,在C Builder中用使用命令行参数是非常简单。C Builder定义了三个全局变量和函数CmdLine、ParamStr()、ParamCount(),有了这三

个变量和函数,就可以非常方便地使用命令行参数了。

ParamCount()用来取得命令行参数的个数,但不包括可执行文件名,也就是相当于DOS下的argc-1,ParamSter()用来取得每一个命令行参数的值,ParamStr(0)就是可执行文件名,实际

的参数就是ParamStr(1)~ParamStr(ParamCount())。下面就以一个例子来说明这三个函数变量的使用。

  在窗体上放置一个Label,用来显示总的命令行参数;再加入一个ListBox,用来显示每个参数,然后在窗体的onCreate事件中加入以下代码:

Label1->Caption=CmdLine;
for(int i=0;i<=ParamCount();i )
ListBox1->Items->Add(ParamStr(i));