ネットを探すとCのサンプルはあるのですが、少々トリッキーなコーディングのものが多いので、C++でのベタな実装というとこで作ってみました。
/**********************************************************************
数値の3桁区切り
試したコンパイル環境
VC++ .NET 2003 / WINDOWS XP Professional 64 bit edition.
GCC C++ 3.3.6 / glibc 2.3.4 / Vine Linux 4.2
**********************************************************************/
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <vector>
#include <string>
#include <sstream>
std::string formatNumber(int num)
{
std::vector<int> sepnum;
int number = abs(num);
int sgn = num >= 0 ? 1 : -1;
while ( number / 1000 ) {
sepnum.push_back(number % 1000);
number /= 1000;
}
std::stringstream ss;
ss << number * sgn;
for ( std::vector<int>::reverse_iterator i = sepnum.rbegin();
i < sepnum.rend(); i++ ) {
ss << "," << std::setfill('0') << std::setw(3) << *i;
}
return std::string(ss.str());
}
using namespace std;
int main(int argc, char* argv[])
{
cout << formatNumber(0) << endl;
cout << formatNumber(1) << endl;
cout << formatNumber(12) << endl;
cout << formatNumber(123) << endl;
cout << formatNumber(1234) << endl;
cout << formatNumber(12345) << endl;
cout << formatNumber(123456) << endl;
cout << formatNumber(1234567) << endl;
cout << formatNumber(12345678) << endl;
cout << formatNumber(123456789) << endl;
cout << formatNumber(1234567890) << endl;
cout << formatNumber(-1) << endl;
cout << formatNumber(-12) << endl;
cout << formatNumber(-123) << endl;
cout << formatNumber(-1234) << endl;
cout << formatNumber(-12345) << endl;
cout << formatNumber(-123456) << endl;
cout << formatNumber(-1234567) << endl;
cout << formatNumber(-12345678) << endl;
cout << formatNumber(-123456789) << endl;
cout << formatNumber(-1234567890) << endl;
}