Re: Аналог GetNumberFormat в boost
От: Sergey Россия  
Дата: 30.12.07 09:42
Оценка:
Здравствуйте, Adriano, Вы писали:

A>Есть ли в boost аналог GetNumberFormat. Надо форматировать числа. например 12345232 > 1 234 5232


Такую группировку умеют делать как стандартный ostream, так и сишные функции вывода, надо всего лишь указать, что вам надо. Для стримов можно сделать так:

    template <class CharType>
    class my_numpunct : public std::numpunct<CharType>
    {
        std::string grouping_;
    public:
        my_numpunct(std::size_t refs, std::string const &grouping) :
                std::numpunct<CharType>(refs), grouping_(grouping) {}
    protected:
        virtual std::string do_grouping() const
        { return grouping_; }
        virtual char_type do_thousands_sep() const
        { return ' '; }
    };

        void SetFormat(std::wostream &os)
    {
        using std::locale;
        locale streamLocale = os.getloc();
        locale loc(locale(), new my_numpunct<wchar_t>(0, "\3");
        streamLocale = streamLocale.combine<numpunct<wchar_t> >(loc);
        os.imbue(streamLocale);
    }


После вызова SetFormat для вашего стрима он начнет выводить числа с группировкой.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.