@Martin: я говорю о возвращаемой по умолчанию форме do_thousands_sep, которая называется ','. Это не то же самое, что «локаль по умолчанию». «Возвращает: символ для использования в качестве разделителя группы цифр. Требуемые специализации возвращаются’, ’или L’, ’».
вая следующий код:
cout << 1000;
Я хотел бы следующий вывод:
1,000
Это можно сделать, используя std :: locale и функцию cout.imbue (), но я боюсь, что здесь может быть пропущен шаг. Вы можете это заметить? В настоящее время я копирую текущую локаль и добавляю фасет разделителя тысяч, но запятая никогда не появляется в моих выходных данных.
template<typename T> class ThousandsSeparator : public numpunct<T> {
public:
ThousandsSeparator(T Separator) : m_Separator(Separator) {}
protected:
T do_thousands_sep() const {
return m_Separator;
}
private:
T m_Separator;
}
main() {
cout.imbue(locale(cout.getloc(), new ThousandsSeparator<char>(',')));
cout << 1000;
}