我正在尝试编写一个辅助函数,可用于从配置文件和基于文本的协议(由机器编写,而不是由人编写)解析整数。我读过How to parse a string to an int in C++?,但那里的解决方案没有解决所有问题。我想要的东西(从最重要到最不重要):
关于解决方案的任何想法?是否有一种简单的方法来包装现有的解析机制以满足这些要求,或者最终自己编写解析器的工作量会减少呢?
答案 0 :(得分:1)
您基本上需要C语言环境的num_get<char>
方面。这有点复杂,所以请参阅this example。基本上,您必须致电use_facet<num_get<char,string::iterator> > (locale::classic).get(begin, end, ... , outputValue)
。
答案 1 :(得分:1)
有一些快速入侵,正常解析(非健壮)并在输入中做一些小检查(例如,如果解析非负数检查它没有' - '字符)。
健壮性的最终测试是将整数转换回文本,并检查输入文本和输出文本是否相同。在文本版本中工作时,您可以放松一些事情,比如接受前导0或空格。