我正在使用boost optionsparser来解析用户传递的命令行参数。 现在程序有一个选项供用户指定他/她选择的dateformat。
等
program -d %d/%m/%Y-%H:%M:%S
,program -d %d/%m/%Y
等等。
我面临的问题是,* 如何检查用户传递的格式字符串的有效性? *
我现在能想到的唯一方法是将格式字符串传递给日期类并在那里使用异常处理。
但是,如果在解析选项时还有另一种方法来检查有效性,那么我不需要传递数据并且不必要地执行操作,因为我在实际使用格式生成日期之前进行了一些计算字符串。
答案 0 :(得分:3)
我不需要传递数据,并且在实际使用格式生成日期字符串之前进行了一些计算,因此不需要做些事情。
为什么不直接要求日期类格式化今天的日期并查看它是否生成异常,而不是通过箍来计算要传递给日期类的内容来验证格式字符串? / p>
如果您尝试自己解析它,那么您只需编写与日期类重复的代码,但这也有可能遗漏一些细节。您可以通过禁止允许的内容来惹恼您的用户(我已经通过应用程序告诉我我的完全有效的电子邮件不会发生这种情况),并且您将不得不处理日期类别中的异常,以防万一在解析格式
时,不要涵盖它涵盖的所有基础