如何使用std::num_put
将数字写入自定义迭代器(例如std::back_insert_iterator<std::string>
)?
std::string s;
using I = decltype(std::back_inserter(s));
auto& f = std::use_facet<std::num_put<char, I>>(std::locale());
f.put(std::back_inserter(s), /* what do I pass here? */, ' ', 5.6);
答案 0 :(得分:0)
您可能不应该使用std::num_put
直接使用std::back_insert_iterator<std::string>
。你的代码没有修改locale
的行为,所以我不知道你试图用facet做什么。
相反,请考虑使用您想要的任何方面填充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();