Visual C++ 7.1Visual C++ 8.0Visual Studio 6Windows VistaVisual C++ 7.0Windows 2003Windows 2000Visual C++ 6.0Windows XP中级开发Visual StudioWindowsC++
CGetOpt - 一个命令行参数解析类






4.72/5 (16投票s)
该类使您能够在任何 C++ 应用程序中轻松解析命令行。

引言
我需要一个简单的(但有效的)参数解析方法。 经过很长时间的搜索,什么也没找到。 这并不意味着没有有用的类,但它们都不符合我的需求。 该类能够解析各种参数。
例如,哪些类能够解析这个
命令行参数
-booltest 1 -log -url www.url-check.com -check true
解析结果
名称 | 值 | 类型 |
-booltest | 1 | 布尔值 |
-url | www.url-check.com | 字符串 |
-log | - | - |
-check | true | 布尔值 |
主要特点如下
- 不使用 MFC,因此该类可以在 Unix 或 Win32 应用程序中使用
- 类型检查
- 区分大小写或不区分大小写,这是可调整的
- 使用异常而不是整数返回值
这并不是一个屡获殊荣的代码。 但是,这段代码将在使用参数时减轻痛苦。 因此,如果您在使用解决方案中的参数时遇到一些问题,请尝试使用此类来查看它是否符合您的要求。
如何使用
本部分将简要解释如何使用 CGetOpt
类。 如果您还有任何问题,请在下面的论坛中发布您的问题。
首先将这些文件添加到您的项目中
- GetOpt.cpp
- GetOpt.h
添加参数
您必须将用户可以输入的所有参数添加到对象中。 这允许该类检查预期参数、类型检查和值检查。 您可以通过调用函数将参数添加到类中
void AddExpectedParameter(string sParameter, bool bValueExpected = true,
ParameterType oParamType = PARAMETERTYPE_UNKNOWN);
例如,添加了三个参数
名称 | 类型 |
-booltest | 布尔值 |
-url | 字符串 |
-log | - |
-check | 布尔值 |
// Declare variables
CGetOpt oParamParsing;
// Add some example parameters
oParamParsing.AddExpectedParameter("-booltest", true, PARAMETERTYPE_BOOL);
oParamParsing.AddExpectedParameter("-url", true, PARAMETERTYPE_STRING);
oParamParsing.AddExpectedParameter("-log", false);
oParamParsing.AddExpectedParameter("-check", true, PARAMETERTYPE_BOOL);
添加到 CGetOpt
对象的所有参数现在都可以被用户使用。
解析
命令行解析非常简单。 CGetOpt
类使用不同类型的异常,可以捕获这些异常。
可以抛出的不同异常是
异常类型 | 描述 |
WrongTypeException |
使用了错误的参数类型 |
ValueExpectedException |
期望值,但未给出任何值 |
UnknownParameterException |
使用了未知参数 |
DoubleParametersException |
参数被使用了两次 |
一个带有错误检查的简单解析示例(捕获了所有异常)
try
{
// Parse parameters
oParamParsing.ParseCommandLine(szCommandLine);
}
catch (exception & ex)
{
printf("%s\n", ex.what());
}
读取参数结果
有两种读取参数结果的方法
- 手动调用所有参数。
参数是否已使用?
ParameterUsed(string sParameter);
获取参数的值
Param oInfo = GetParameterResultInfo(string sParameter); printf("%s => %s\n", oInfo.sParameter.c_str(), oInfo.sValue.c_str());
- 遍历所有已使用的项目
// Show results for (int i = 0; i < oParamParsing.GetParameterResultCount(); i++) { Param oInfo = oParamParsing.GetParameterResultInfo(i); printf("%s => %s\n", oInfo.sParameter.c_str(), oInfo.sValue.c_str()); }
CGetOpt 演示
还包含一个小演示。 演示包含与本文中作为示例给出的代码相同的代码。
演示工作起来很简单。 您启动应用程序,将四个基本参数添加到允许的参数中,您可以尝试输入参数列表。
当您想退出演示应用程序时,只需在空行中按回车键。
历史
- 2006 年 3 月 7 日
- 发布了 1.1 版,其中包含在检查有效整数类型时的小错误修复
- 2006 年 2 月 28 日
- 首次发布