#include <locale>
#include <iostream>
#include <iomanip>
#include <string>
class comma_numpunct : public std::numpunct<char>
{
public:
comma_numpunct(char thousands_sep, const char* grouping)
:m_thousands_sep(thousands_sep),
m_grouping(grouping){}
protected:
char do_thousands_sep() const{return m_thousands_sep;}
std::string do_grouping() const {return m_grouping;}
private:
char m_thousands_sep;
std::string m_grouping;
};
int main()
{
std::locale comma_locale(std::locale(), new comma_numpunct(',', "\03"));
std::cout.imbue(comma_locale);
std::cout << std::setprecision(7) << std::fixed << 1000000.1234;
}
I2luY2x1ZGUgPGxvY2FsZT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHN0cmluZz4KCmNsYXNzIGNvbW1hX251bXB1bmN0IDogcHVibGljIHN0ZDo6bnVtcHVuY3Q8Y2hhcj4KewpwdWJsaWM6CiAgIGNvbW1hX251bXB1bmN0KGNoYXIgdGhvdXNhbmRzX3NlcCwgY29uc3QgY2hhciogZ3JvdXBpbmcpCiAgICAgIDptX3Rob3VzYW5kc19zZXAodGhvdXNhbmRzX3NlcCksCiAgICAgICBtX2dyb3VwaW5nKGdyb3VwaW5nKXt9CnByb3RlY3RlZDoKICAgY2hhciBkb190aG91c2FuZHNfc2VwKCkgY29uc3R7cmV0dXJuIG1fdGhvdXNhbmRzX3NlcDt9CiAgIHN0ZDo6c3RyaW5nIGRvX2dyb3VwaW5nKCkgY29uc3Qge3JldHVybiBtX2dyb3VwaW5nO30KcHJpdmF0ZToKICAgY2hhciBtX3Rob3VzYW5kc19zZXA7CiAgIHN0ZDo6c3RyaW5nIG1fZ3JvdXBpbmc7Cn07CgppbnQgbWFpbigpCnsKCiAgICBzdGQ6OmxvY2FsZSBjb21tYV9sb2NhbGUoc3RkOjpsb2NhbGUoKSwgbmV3IGNvbW1hX251bXB1bmN0KCcsJywgIlwwMyIpKTsKCiAgICBzdGQ6OmNvdXQuaW1idWUoY29tbWFfbG9jYWxlKTsKICAgIHN0ZDo6Y291dCA8PCBzdGQ6OnNldHByZWNpc2lvbig3KSA8PCBzdGQ6OmZpeGVkIDw8IDEwMDAwMDAuMTIzNDsKfQ==