Я бы посмотрел на Boost Spirit
По крайней мере, тесты форматировщиков (то есть float -> string) последовательно получаются какtop-of-the-the-bill * 1 *
Также точную спецификацию формата ввода и семантику при разборе можно очень легко настроить с помощью класса политики.
Вот мое абсолютное минимальное использование qi :: any_real_parser <> и список зависимостей, к которым он касается:
#include <boost/spirit/include/qi_real.hpp>
namespace qi = boost::spirit::qi;
int main()
{
const char input[] = "3.1415926";
const char *f(input);
const char *l(f+strlen(input));
qi::any_real_parser<double> x;
double parsed;
x.parse(f, l, qi::unused, qi::unused, parsed);
return 0;
}
- буст / концепция
- буст / конфигурация
- буст / детализация
- буст / исключение
- буст / синтез
- буст/ iterator
- boost / math
- boost / mpl
- boost / опционально
- boost / препроцессор
- boost / proto
- boost / range
- boost / regex
- boost / spirit
- boost / typeof
- boost / type_traits
- boost /Утилита
- буст / вариант
выровнятьd_storage.hpp, assert.hpp, blank_fwd.hpp, blank.hpp, call_traits.hpp, checked_delete.hpp, concept_check.hpp, config.hpp, cstdint.hpp, current_function.hpp, foreach_fwd.hpp, foreach.hpp, get_pointer.HPP, implicit_cast.hpp, iterator.hpp, limits.hpp, math_fwd.hpp, next_prior.hpp, noncopyable.hpp, none.hpp, none_t.hpp, optional.hpp, ref.hpp, static_assert.hpp, swap.hpp,throw_exception.hpp, type.hpp, utility.hpp, variable.hpp, version.hpp
1 например, http://www.boost.org/doc/libs/1_47_0/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html