проблемка с C++ locales
Добавлено: 12 июл 2005, 11:48
Никто не задавался задачаей с помощью сабжа, например, выводить числа с разделителем для тысяч (вроде "10,000.561")? Судя по всему, это делается кодом типа
class xxx: public numpunct_byname<char>
{
protected:
~xxx() {}
public:
char do_thousands_sep();
explicit xxx()
: numpunct_byname<char>("german") {}
};
char xxx::do_thousands_sep()
{
return ' ';
}
void main(int argc, char* argv[])
{
..
std::locale loc = std::_ADDFAC( dloc, new xxx);
std::cout.imbue(loc);
std::cout << 10000.561 << endl;
..
}
однако почему-то не работает. Функция do_thousands_sep() вообще
не вызывается, однако то, что конструктор создает — numpunct_byname<char>("german") — именно немецкий locale — факт, ибо в качестве decimal_point уже печатается ',', а не '.' — как в стандарте..
class xxx: public numpunct_byname<char>
{
protected:
~xxx() {}
public:
char do_thousands_sep();
explicit xxx()
: numpunct_byname<char>("german") {}
};
char xxx::do_thousands_sep()
{
return ' ';
}
void main(int argc, char* argv[])
{
..
std::locale loc = std::_ADDFAC( dloc, new xxx);
std::cout.imbue(loc);
std::cout << 10000.561 << endl;
..
}
однако почему-то не работает. Функция do_thousands_sep() вообще
не вызывается, однако то, что конструктор создает — numpunct_byname<char>("german") — именно немецкий locale — факт, ибо в качестве decimal_point уже печатается ',', а не '.' — как в стандарте..