#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
#include <cstdint>
#include <vector>
std::string format_commas(uint64_t value)
{
std::stringstream ss;
std::vector<uint16_t> parts;
do {
parts.push_back(short(value % 1000));
value /= 1000;
} while (value > 0);
for (std::vector<uint16_t>::reverse_iterator i = parts.rbegin(); i != parts.rend(); ++i) {
if (i != parts.rbegin())
ss << std::setw(3) << std::setfill('0');
ss << *i;
if (i + 1 != parts.rend())
ss << ',';
}
return ss.str();
}
std::string format_commas_2(uint64_t value)
{
std::string result;
std::stringstream ss;
std::vector<int> parts;
do {
parts.push_back(value % 1000);
value /= 1000;
} while (value > 0);
for (std::vector<int>::reverse_iterator i = parts.rbegin(); i != parts.rend(); ++i) {
if (i != parts.rbegin())
ss << std::setw(3) << std::setfill('0');
ss << *i;
if (i + 1 != parts.rend())
ss << ',';
}
result = ss.str();
return result;
}
int main()
{
std::cout << '(' << format_commas(0) << ')' << std::endl;
std::cout << '(' << format_commas(8) << ')' << std::endl;
std::cout << '(' << format_commas(18) << ')' << std::endl;
std::cout << '(' << format_commas(128) << ')' << std::endl;
std::cout << '(' << format_commas(1238) << ')' << std::endl;
std::cout << '(' << format_commas(12348) << ')' << std::endl;
std::cout << '(' << format_commas(123458) << ')' << std::endl;
std::cout << '(' << format_commas(1234568) << ')' << std::endl;
}