C++/STLで数値の3桁区切り

久しぶりのC++/STLネタです。今回は数値の3桁区切りをやってみました。
ネットを探すと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;

}

2009-02-16 | コメント:0件



複数あるネットワーク接続で、優先して使用するネットワーク接続を指定する(Windows XP編)

あけまして、おめでとうございます。
前回の更新からすっかり時間がたちました。月日の経つのは早いもので、まぁぼちぼち更新します。

今年一発目の技術ネタは、Windowsでのネットワーク接続に関するものです。
Windowsのネットワーク関係の設定で、知らないことはもうないとか勘違いしていましたが、最近知った設定を紹介します。

複数のネットワーク接続がある場合、Windowsではどちらかを優先して使用する設定があります。例えば、ワイヤレスネットワーク接続とケーブルのローカルエリア接続で、両方が有効な場合にローカルエリア接続を優先するように設定する等です。

設定方法ですが、マイネットワークのプロパティ(以下の図)の詳細設定メニューの詳細設定にあります。

以下のように詳細設定のダイアログが出てきます。ここで優先する接続をリストの上にもっていきます。
(下図の設定では、ワイヤレスネットワークが優先されます)

上記のダイアログですが、Windows XPでは、この方法でしか出せないようです。
2009-01-05 | コメント:0件
Previous Page | Next Page