扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:Paul DiLascia 来源:msdn中国 2007年11月19日
关键字:
这正解释了使用托管数组的原因,但 args[0] 呢?为什么它是第一个命令参数而不是文件名呢?我并不知道 Redmondtonians 的想法如何,但也许他们考虑到省略文件名会更合理,也许他们认为您不需要它。不论是哪种情况都无关紧要,因为获取文件名是很容易的事情。我确信可通过多种方法来获取文件名,但我所能想到的最显而易见的、以 CLR 为中心(与 /clr:safe 兼容)的方法是使用 System::Environment 类。它公开下列方法:
以下是引用片段: static array^ GetCommandLineArgs () |
与提供给主方法的 args 参数不同,从 Environment::GetCommandLineArgs 返回的数组实际上确实是以可执行文件名开始的。
最后,您为什么一定要知道您自己的 EXE 文件的名称呢?毕竟您在编写程序,您或许知道它的名称。原因之一就是要生成包含程序名的帮助消息而不对其进行硬编码。帮助消息可能如下所示:
FooFile -- Turns every word in your file to "foo"
usage:
FooFile [/n:
filespec = the files you want to change
此处的 FooFile 为程序名。我可以只是在我的帮助文本中将其写为“FooFile”,但很久以前我就知道,我经常会重命名程序或将代码从一个程序复制到另一个程序中。通过从程序自身获取程序名(通过 argv 或 Environment::GetCommandLineArgs),我的帮助消息始终会显示正确的名称,即使我重命名文件或将我的代码复制到另一个程序中也将如此。
祝您编程顺心如意!
请将您要提交给 Paul 的问题和意见发送至 cppqa@microsoft.com。
Paul DiLascia 是兼职软件顾问和资深的 Web/UI 设计师。他是《Windows++: Writing Reusable Windows Code in C++》(Windows++:在 C++ 中编写可重用 Windows 代码)一书 (Addison-Wesley, 1992) 的作者。Paul 在其业余时间里开发出了 PixieLib,可通过他的网站 http://www.dilascia.com/ 来获取该 MFC 类库。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者