LINUX.ORG.RU

C++, как выводить float в std::ostream << так, чтобы целая часть от дробной отделялась запятыми?


0

1

Совет «Установи локаль» не поможет - там столько тонкостей, что без конкретного куска кода не разобраться. Дайте пожалуйста кусок кода, который гарантированно выведет в std::fstream тип float с запятой в качестве разделителя целой и дробной частей при любой системной локали.

★☆

Последнее исправление: kiverattes (всего исправлений: 2)

чтобы целая часть от дробной отделялась запятыми

BDSM?

Eddy_Em ☆☆☆☆☆
()

Создай обертку над float и печатай в ней как душе угодно.

staseg ★★★★★
()

http://stackoverflow.com/questions/1422151/how-to-print-a-double-with-a-comma

#include <locale>
#include <iostream>

template<typename CharT>
class DecimalSeparator : public std::numpunct<CharT>
{
public:
	DecimalSeparator(CharT Separator)
		: m_Separator(Separator)
	{}

protected:
	CharT do_decimal_point()const
	{
		return m_Separator;
	}

private:
	CharT m_Separator;
};

int main()
{
	float v = 2.5;
	std::cout << v << std::endl;
	std::cout.imbue(std::locale(std::cout.getloc(), new DecimalSeparator<char>(',')));
	std::cout << v << std::endl;
	return 0;
}

P. S. лор полон мудаков и неосиляторов гугла.

anonymous
()
Ответ на: комментарий от anonymous

Спасибо за гугление. Я это нагуглил, а потом потерял тынц и никак не мог нагуглить снова ) Ай молодец.

kiverattes ★☆
() автор топика
Ответ на: комментарий от trashymichael

Смысл? Тебе любой анонимус за 5 минут всё нагуглит без проблем.

kiverattes ★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.