Вы, вероятно, не должны использовать std::num_put
напрямую с std::back_insert_iterator<std::string>
. Ваш код там не изменяет поведение locale
, поэтому я не знаю, что вы пытаетесь сделать с фасетом.
Вместо этого рассмотрите возможность добавления std::stringstream
к любым нужным фасетам, а затем выполните обычную вставку потока.
std::stringstream ss;
std::locale loc = // Some non-standard locale ?
ss.imbue(loc); // if you have changed anything
ss << 5.6;
std::string s = ss.str();