YAML リーダーを作成したいと考えています。実行する必要がある基本的なタスクの 1 つは、文字列だけを見てエントリの種類を判断することです。(型を明示的に宣言する方法もありますが、暗黙的な型付けは YAML の最も魅力的な機能の 1 つです)
基本的に、私が注意したい型は、整数、浮動小数点数、文字列、真偽値の真/偽、および null (空のフィールドで表される) です。
文字列、true/false、null、これらは簡単に検出できます。しかし、整数、特に浮動小数点数は、さまざまな方法で記述でき、通常は記述されているため、問題を引き起こしています (浮動小数点数は科学表記法で、整数は 16 進数で表記されることがあります)。
私の質問: C++ では、数字を含む文字列を同じように簡単に表現し、その文字列表現を適切な値に変換できるフィールドから、浮動小数点または整数を認識する良い方法は何ですか?
float が取ることができる形式 (おそらく完全なリストではない) は次のとおりです。
0.0
0.0f
0.f
0.
+0.0
-0.0e+413
整数は次の形式を取ります。
99 // decimal
077 // octal
0xFF // hex
-10
+10