C++ 最好的方式是什么;“帮助”;控制台应用程序中的消息?
我正在编写一个控制台应用程序,它正在迅速获得许多命令行参数和标志。因此,我希望用户能够访问这些标志的描述以及它们的用途 我可以想出几种可能的解决办法C++ 最好的方式是什么;“帮助”;控制台应用程序中的消息?,c++,c,console,usage-message,C++,C,Console,Usage Message,我正在编写一个控制台应用程序,它正在迅速获得许多命令行参数和标志。因此,我希望用户能够访问这些标志的描述以及它们的用途 我可以想出几种可能的解决办法 我可以编写一个自述文件,并将其粘贴到与可执行文件相同的目录中。优点是它简单且可移植,缺点是某人很容易删除/编辑该文件 当用户键入mycmd--help或类似内容时,我可以将整个消息粘贴在程序中的一个变量中,并将其打印到屏幕上。优点是可执行的,不可编辑,缺点是代码,因为我会有下面这样的东西四处浮动 const char[] helpmsg = "L
- 我可以编写一个自述文件,并将其粘贴到与可执行文件相同的目录中。优点是它简单且可移植,缺点是某人很容易删除/编辑该文件
- 当用户键入
或类似内容时,我可以将整个消息粘贴在程序中的一个变量中,并将其打印到屏幕上。优点是可执行的,不可编辑,缺点是代码,因为我会有下面这样的东西四处浮动mycmd--help
const char[] helpmsg = "Line1\n" "Line2\n" "...\n" "LineN\n";
- 我可以为我的程序编写一个
条目,但这不是很好的移植性,因为该应用程序在Windows和Linux上的使用非常平等man
理想情况下,开发人员(目前的我)可以很容易地编辑和保持更新,但其他人无法真正弄乱它。考虑使用该库。要打印帮助消息,我通常使用一个函数。因此,您可以在启动或运行时使用它。例如:
void usage(char* progName)
{
cout << progName << "[options]" << endl <<
"Options:" << endl <<
"-h | --help Print this help" << endl <<
"-v | --version Print the SVN version" << endl <<
"-V | --Version Print the proxy version" << endl <<
"-d | --daemonize Run as daemon" << endl <<
"-P | --pidfile Path to PID file (default: " <<
WPASUP_PROXY_DEFAULT_PID_FILE << ")" << endl <<
"-l | --logging Path to logging file (default: " <<
WPASUP_PROXY_DEFAULT_LOGGING << ")" << endl <<
"-i | --ip The IP address of the main application (default: " <<
WPASUP_PROXY_MAIN_APP_IP << ")" << endl <<
"-p | --port The port number of the main application (default: " <<
WPASUP_PROXY_DEFAULT_MAIN_APP_PORT << ")" << endl <<
"-w | --wpa_cli Path to wpa_cli program (default: " <<
WPASUP_PROXY_DEFAULT_WPA_CLI << ")" << endl;
}
void用法(char*progName)
{
cout您可以使用which目标精确地允许解析和使用多个选项(短格式或长格式)
(注意还有一个getopts
程序可与具有类似功能的shell脚本一起使用)您也可以编写自述文件,然后在prog--help上打印出来。这看起来像是我想要的。我发现您可以在预期的输入中添加选项和说明。文档中不太清楚我将如何将这些打印到屏幕上,但我认为这是可能的,否则会出现什么问题为每个选项提供说明的步骤。请参阅“入门”一节你可以把Booost::OpjyToStopy::OpthsS.Debug对象.@ Fielip EkbBoad想法,这将复制信息,这永远不是一个好东西,这总是会导致它们之间的差异。你应该问C++的问题,或者C.<代码> STD::CUT对于一个示例片段来说会更好。为什么?您使用的是std::endl
?它会在每行之后刷新缓冲区。我会使用\n
(没有批评,真正的问题)