gpt4 book ai didi

c++ - 使用默认值 boost 程序选项

转载 作者:行者123 更新时间:2023-11-28 00:31:30 27 4
gpt4 key购买 nike

我有一个使用 boost program_options 的 C++ 控制台应用程序。

我有一个名为 --list-timezones 的参数

现在我想像那样使用它

要么

myapp --list-timezones

这给了我所有可用的时区

myapp --list-timezones AT

这只给了我奥地利的时区

我的选项初始化如下

options.add_options()
("date-format,d", po::value<string>()->value_name("<Formatstring>")->default_value("%Y-%m-%d %H:%M:%S","\"%Y-%m-%d %H:%M:%S\""),"Format-string for input or output\ne.g. \"%Y-%m-%d %H:%M:%S\"")
("input-format,i", po::value<string>()->value_name("<Representation>")->default_value("HEX"),"HEX hex value\nBIN binary value\nDEC decimal value")
("output-format,o", po::value<string>()->value_name("<Representation>")->default_value("HEX"),"HEX hex Value\nBIN binary value\nDEC decimal value")
("to,t", po::value<string>()->value_name("<Date-Format>"),"CHROME\nMAC\nUNIX\nUNIX_ms\nWin64\nWinCookie\nWinOle\nWinFiletime\nDOS\nHFS\nHFS+")
("from,f", po::value<string>()->value_name("<Date-Format>")/*->default_value("UNKNOWN")*/,"CHROME\nMAC\nUNIX\nUNIX_ms\nWin64\nWinCookie\nWinOle\nWinFiletime\nDOS\nHFS\nHFS+\nUNKNOWN")
("timezone,z", po::value<string>()->value_name("<Time-Zone>")->default_value("UTC"),"e.g \"Europe/Vienna\"\n execute '--list-timezones ALL' to see all available timezones")
("list-timezones,l", po::value<string>()->value_name("<ISO-3166 Country Code>"), "List all available timezones\nyou can filter with ISO3166 country code(e.g AT for Austria)")
("value,v", po::value<string>()->value_name("<value>"), "Input Value")
("swap-bytes,s", "Swap bytes of result")
;

有什么办法可以处理吗?

如果我使用不带参数的 --list-timezones 我会得到一个异常

谢谢弗洛里安

最佳答案

你想要这个:

("list-timezones,l", po::value<string>()->implicit_value("")->value_name(...

然后你就可以论证或不论证了。如果没有给出,字符串值将为空,这在您的情况下似乎是一个合理的标记值。

关于c++ - 使用默认值 boost 程序选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22743757/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com