Computer and network - Update 9 Dec 2011

Computer and network

Programming language C++

Tips of programming


数値からstringへの変換

ostringstreamを使う。
以下はファイル名の置き換えのために、幅を指定して`0'でpadding するコード。

#include <iomanip>
#include <sstream>

int iconf = 300;
filename_base = "./config-$$$$$$.bin";
// `$$$$$$' of this file name should be replaced with iconf
// with padding of `0'.

string::size_type pos1 = filename_base.find_first_of("$");
string::size_type pos2 = filename_base.find_last_of("$");
size_t length = pos2 - pos1 + 1;

std::ostringstream ost;
ost << std::setw(length) << std::setfill('0') << iconf;
string num2 = ost.str();

string filename = filename_base;
filename.replace(pos1,length,num2);

// now, filename = "./config-000300.bin".

[14 Jan 2013]


const 修飾子


可変長引数の扱い方

引数の個数を指定せずに関数を呼出す形式。 受けた引数を扱うためのマクロを使う。

並列環境で printf をラップした関数をつくるのに使った。 [13 May 2011]


実行時の型情報取得

[19 Oct 2010]


Constructor with arguments

Arguments を渡す constructor を持つクラスの配列を new で生成したい場合。 (今苦労している問題。 constructor C++ array argument で検索)
[15 Oct 2010]

クラスの配列を作れるのは、引数なし constructor が用意されて いる場合だけのよう。 STLのコンテナなどでは、引数なし constructor でinstance を生成した後で、サイズの再設定が可能。 こういう手順を使うか、pointer を使うというのが解らしい。 [13 May 2011]


Binary File I/O


Mixed programming