如何使用std :: num_put与自定义迭代器?

时间:2018-05-10 09:55:22

标签: c++ iterator std

如何使用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);

1 个答案:

答案 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();