У меня есть строка для токенизации. Это форма HHmmssff
, где H
, m
, s
, f
- цифры.
Он должен быть разбит на четыре двузначных числа, но мне нужно, чтобы он также принимал сокращенные формы, например sff
, поэтому он интерпретируется как 00000sff
.
Я хотел использовать boost::tokenizer
offset_separator
, но, похоже, он работает только с положительными смещениями, и мне бы хотелось, чтобы это работало в обратном направлении.
Хорошо, одна идея состоит в том, чтобы дополнить строку нулями слева, но, возможно, сообщество придумает что-нибудь uber -сумное. ;)
Редактировать: Дополнительные требования только что вступили в игру.
Основная потребность в более разумном решении состояла в том, чтобы обрабатывать все случаи, такие как f
, ssff
, mssff
и т. Д., Но также принимать более полные записи времени, такие как HH:mm:ss:ff
с его сокращенными формами. например, s:ff
или даже s:
(этот должен интерпретироваться как s:00
).
В случае, когда строка заканчивается на :
Я, очевидно, могу также заполнить ее двумя нулями, затем удалить все разделители, оставив только цифры, и проанализировать полученную строку с помощью Spirit.
Но, похоже, было бы немного проще, если бы был способ заставить токенизатор смещения возвращаться назад от конца строки (смещения -2, -4, -6, -8) и лексически приводить числа к int
s.