トークン化する文字列があります。その形式はHHmmssff
、H
、m
、s
がf
数字です。
4 つの 2 桁の数字にトークン化されるはずですが、短縮形も受け入れる必要があるsff
ため、 と解釈され00000sff
ます。を使用したかったboost::tokenizer
のoffset_separator
ですが、正のオフセットでのみ機能するようで、逆方向に機能させたいと思います。
わかりました、1 つのアイデアは文字列の左から 0 をパディングすることですが、おそらくコミュニティは非常にスマートな何かを思いつきます。;)
編集: 追加の要件が登場しました。
よりスマートなソリューションの基本的な必要性はf
、ssff
、 、などのすべてのケースを処理することでしたが、その省略形のmssff
ように、より完全な時間表記も受け入れることでした。HH:mm:ss:ff
s:ff
s:
s:00
文字列が I で終わる場合は、:
明らかに 2 つのゼロを埋め込むこともできます。次に、数字だけを残してすべてのセパレータを取り除き、結果の文字列を精力的に解析します。
しかし、オフセット トークナイザーを文字列の末尾 (オフセット -2、-4、-6、-8) からさかのぼって、数値をレキシカルに s にキャストする方法があれば、少し簡単になるようint
です。