Ответ 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.
Я хочу создать строку на С++ в следующем формате:
string + numbersWithFormatAndThousandSeparator + string
Я не уверен, поддерживает ли std::string
или snprintf()
формат, особенно разделитель тысяч. Может ли кто-нибудь помочь мне с этим?
Быстрый и простой способ:
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.
BOOST улучшает поддержку языка С++ (а также дает четкие примеры его использования для отображения чисел с разделителями тысяч запятых): см. http://cppcms.sourceforge.net/boost_locale/html/tutorial.html
Существует много способов правильно форматировать число в С++. Посмотрите эту статью для некоторых из них (boost::lexical_cast
- мой личный фаворит): http://www.cplusplus.com/articles/numb_to_text/
Информация (включая разделитель для тысяч) для форматирования числовых значений доступна в заголовке <clocale>
. Этот заголовок предоставляет структуру lconv
, которая имеет необходимую информацию. В частности, структура имеет элемент char *thousands_sep
, который может быть именно тем, что вам нужно.
Подробную информацию см. в документации struct lconv для всех деталей.