我想编写一个 YAML 阅读器,它必须执行的一项更基本的职责是通过单独查看条目的字符串来确定条目的类型。(有一些方法可以显式声明类型,但隐式类型是 YAML 最吸引人的特性之一)
从本质上讲,我要注意的类型是整数、浮点数、字符串、布尔值 true/false 和 null(由空字段表示)
字符串,真/假,空,这些很容易检测。但是整数,尤其是浮点数给我带来了麻烦,只是通过它们可以并且通常以多少不同的方式写入(浮点数有时以科学记数法出现,整数以十六进制表示,等等)。
我的问题:在 C++ 中,从可以轻松表示包含数字的字符串并将其字符串表示形式转换为适当值的字段中识别浮点数或整数的好方法是什么?
浮点数可以采用的格式(可能不是详尽的列表)是:
0.0
0.0f
0.f
0.
+0.0
-0.0e+413
而整数将采用以下形式:
99 // decimal
077 // octal
0xFF // hex
-10
+10