【发布时间】:2013-04-20 21:33:56
【问题描述】:
这有点难以解释,但我会尽力而为。假设我们有一个接收选项的函数。该选项将是第一次,一个字符串。像这样的:
command option="blah blah blah"
在这里,我们的选项应该是blah blah blah。
现在,我想为开发人员提供一种将字符串“转换”(not cast)为另一种类型的方法。我会为基本类型实现我自己的“翻译器”,例如bool 或int,例如:
command recursive="true"
或
命令行=7
让开发人员覆盖它们或指定新的,也许使用函子(因为我使用的是 C++11,所以使用美妙的functional 没有问题)。
问题是我还没有找到一个可以接受的关于如何实现它的想法。根据我对 C++ 的了解,我已经尝试了一些东西——这绝对不是“完整的”,而是“可以接受的”——但其中很多都没有工作或让我陷入困境。我的意思是我可以使用一些肮脏的技巧,但我想要最优雅的解决方案(当然是类型安全的)。
我希望我不会成为你的luser。感谢您的宝贵时间,无论如何,对不起。
最好的问候, 卡尔里什
【问题讨论】:
-
boost::lexical_cast- 不要让名字欺骗了你。它可以满足您的需求。 -
@Captain Obvlious 我很抱歉 - 遗憾的是,在我正在处理的环境中,boost 不是一个选项。很抱歉没有指出这一点。无论如何,谢谢。
-
好吧,祝你好运重新发明轮子。确保没有人注意到你付款:-)
-
@KerrekSB 我认为实现类型转换器一定不难。事实上,正如我所指出的,我想让开发人员通过
std::function显式覆盖它来更改正在使用的“转换器”。如果开发人员使用 boost,那么他/她就可以了。我不能使用 boost,这是我的限制。 -
嗯,你需要一个解析器...
标签: c++ types type-conversion