命令行参数解析器






1.07/5 (14投票s)
2003年3月15日
1分钟阅读

55480

694
以任何顺序、任意数量、任意类型获取命令行参数
CmdLineParser /command1:argument1 /command2 /command3:longer argument /commannd4:1234
引言
许多应用程序都可以使用命令行参数。通常是一个文件名,例如,你可以使用文档文件名调用 MS Word,它将打开该文件。
这是一个有用的功能。此外,如果你想提供更多的参数,决定哪个参数代表什么,哪个是必需的等等,可能会很困难。
在这个解决方案中,每个参数都以 '/' 字符开头,命令名称和参数之间用 ':' 分隔。
例如
CmdLineParser /file:file_name /print /option1:text with space /option2:1234
如所示,你可以使用
- 带有参数的命令
- 仅命令,不带参数,例如 /PRINT
- 参数可以包含空格,任何字符,除了 '/'
- 参数可以是任何类型,例如文本、数字、
BOOL
,我的意思是任何将被转换为你的类型的文本!
使用代码
为了测试,在项目设置对话框(Alt-F7)、对话框窗口中输入一些参数,程序参数。
如果你输入之前的参数,它将读取文件名参数,并因为未知参数而给出错误消息
if (!_strnicmp(command, "command", 10)) { strcpy(m_file, arg); } else if (!_strnicmp(command, "print", 10)) ...
要转换你的参数,使用 _strncmp
,它不区分大小写,然后编写代码来处理此命令。对于查找未知命令,if else 对很有用。你不能对字符串使用 switch。获取所有参数后,你的代码就可以使用它们了!
历史
它有效了!:)