Форматирование строки именованных параметров в C ++

Мне интересно, есть ли такая библиотека, как Boost Format, но которая поддерживает именованные параметры, а не позиционные. Это распространенная идиома, например, в Python, где у вас есть контекст для форматирования строк, который может использовать или не использовать все доступные аргументы, например

mouse_state = {}
mouse_state['button'] = 0
mouse_state['x'] = 50
mouse_state['y'] = 30

#...

"You clicked %(button)s at %(x)d,%(y)d." % mouse_state
"Targeting %(x)d, %(y)d." % mouse_state

Существуют ли какие-либо библиотеки, которые предлагают функциональность этих двух последних строк? Я ожидал, что он предложит API что-то вроде:

PrintFMap(string format, map<string, string> args);

В Google я нашел много библиотек, предлагающих варианты позиционных параметров, но ни одна из которых не поддерживает именованные. В идеале у библиотеки мало зависимостей, поэтому я могу легко вставить ее в свой код. C ++ не будет таким идиоматическим для сбора именованных аргументов, но, вероятно, кто-то там думал об этом больше, чем я.

Производительность важна, в частности, я хотел бы уменьшить выделение памяти (всегда сложно в C ++) , поскольку его можно запускать на устройствах без виртуальной памяти. Но иметь даже медленный вариант для начала, вероятно, будет быстрее, чем написать его с нуля самому.

16
задан BCS 2 April 2011 в 16:43
поделиться