Thousand separator в С++

Я хочу создать строку на С++ в следующем формате:

string + numbersWithFormatAndThousandSeparator + string

Я не уверен, поддерживает ли std::string или snprintf() формат, особенно разделитель тысяч. Может ли кто-нибудь помочь мне с этим?

Ответ 1

Быстрый и простой способ:

std::ostringstream ss;
ss.imbue(std::locale("en_US.UTF-8"));
ss << 1033224.23;
return ss.str();

Вернет строку "1,033,244.23"

Но для настройки вашей системы требуется en_US.UTF-8 locale.

Ответ 3

BOOST улучшает поддержку языка С++ (а также дает четкие примеры его использования для отображения чисел с разделителями тысяч запятых): см. http://cppcms.sourceforge.net/boost_locale/html/tutorial.html

Ответ 4

Существует много способов правильно форматировать число в С++. Посмотрите эту статью для некоторых из них (boost::lexical_cast - мой личный фаворит): http://www.cplusplus.com/articles/numb_to_text/

Ответ 5

Информация (включая разделитель для тысяч) для форматирования числовых значений доступна в заголовке <clocale>. Этот заголовок предоставляет структуру lconv, которая имеет необходимую информацию. В частности, структура имеет элемент char *thousands_sep, который может быть именно тем, что вам нужно.

Подробную информацию см. в документации struct lconv для всех деталей.