#include <Properties.h>
Public メソッド | |
Properties () | |
コンストラクタ | |
Properties (const std::map< std::string, std::string > &defaults) | |
コンストラクタ | |
Properties (const char *defaults[], long num=LONG_MAX) | |
コンストラクタ | |
virtual | ~Properties () |
デストラクタ | |
std::string | getProperty (const std::string &key) const |
指定されたキーを持つプロパティを、プロパティリストから探す | |
std::string | getProperty (const std::string &key, const std::string &defaultValue) const |
指定されたキーを持つプロパティを、プロパティリストから探す。 | |
void | list (std::ostream &out) |
指定された出力ストリームに、プロパティリストを出力する | |
void | load (std::istream &inStream) |
入力ストリームからキーと要素が対になったプロパティリストを読み込む. | |
std::vector< std::string > | propertyNames () |
プロパティのキーのリストを vector で返す | |
void | save (std::ostream &out, const std::string &header) |
プロパティリストを指定されたストリームに保存する | |
std::string | setProperty (const std::string &key, const std::string &value) |
Properties に value を key について登録する. | |
void | store (std::ostream &out, const std::string &header) |
プロパティリストを出力ストリームへ保存する | |
Protected 型 | |
typedef std::map< std::string, std::string >::iterator | Itr |
Protected メソッド | |
void | splitKeyValue (const std::string &str, std::string &key, std::string &value) |
Protected 変数 | |
std::map< std::string, std::string > | m_defaults |
プロパティリストには、その「デフォルト値」として別のプロパティリストを持つ ことができる。元のプロパティリストでプロパティキーが見つからないと、この 2番目のプロパティリストが検索される。
Properties は std::map<std::string, std:string> を継承するので、std::map が持つメソッドを適用することができる。しかし、これらのメソッドを使用する ことは推奨されない。 プロパティの取得には getProperty、プロパティのセットには setProperty と いったメソッドを使用することが推奨される。
プロパティをストリームに保存するとき、またはストリームからロードするときに、 ISO 8859-1 文字エンコーディングが使用される。このエンコーディングに直接表示 できない文字は、扱うことができない。
このクラスは、Java の Properties クラス (java.util.Properties) とほぼ同様の メソッドを持つ。また、入出力されるファイルは Java の Properties クラスが 出力するものと互換性があるが、Unicode を含むものは扱うことができない。
|
|
|
コンストラクタ デフォルト値を持たない空のプロパティリストを作成する。 |
|
コンストラクタ 指定されたデフォルト値を持つ空のプロパティリストを作成する。 |
|
コンストラクタ 指定されたデフォルト値を持つ空のプロパティリストを作成する。 デフォルト値は char* の配列により与えられ、key と value の対になっており、 リストの終端は配列の数を表す引数 num か、空文字の key で与えらられなければ ならない。 以下に例を示す。 const char* defaults = { "key1", "value1", "key2", "value2", "key3", "value3", "key4", "value4", "key5", "value5", "" }; Properties p(defaults); // もしくは Properties p(defaults, 10); |
|
デストラクタ
|
|
指定されたキーを持つプロパティを、プロパティリストから探す。 指定されたキーを持つプロパティを、プロパティリストから探す。 そのキーがプロパティリストにないと、デフォルトのプロパティリスト、 さらにそのデフォルト値が繰り返し調べられる。 そのプロパティが見つからない場合は、デフォルト値の引数が返される。
|
|
指定されたキーを持つプロパティを、プロパティリストから探す 指定されたキーを持つプロパティを、プロパティリストから探す。 そのキーがプロパティリストにないと、デフォルトのプロパティリスト、 さらにそのデフォルト値が繰り返し調べられる。 そのプロパティが見つからない場合は、null が返される。
|
|
指定された出力ストリームに、プロパティリストを出力する 指定された出力ストリームに、プロパティリストを出力する。 このメソッドは主にデバッグに用いられる。
|
|
入力ストリームからキーと要素が対になったプロパティリストを読み込む.
入力ストリームからキーと要素が対になったプロパティリストを読み込む。 ストリームは、ISO 8859-1 文字エンコーディングを使用しているとみなされる。 各プロパティは、入力ストリームに行単位で登録されているものとみなされ、 各行は行区切り文字 ( 空白文字だけの行、または最初の非空白文字が ASCII 文字 # または ! である 行は無視される。つまり、# または ! はコメント行を示す。 空白行またはコメント行以外のすべての行は、テーブルに追加されるプロパティ を記述する。ただし、行の終わりが \ の場合は、次の行があれば継続行として 扱われます (下記を参照)。 キーは、最初の非空白文字から、最初の ASCII 文字 =、:、または空白文字の直前までの、行内のすべての文字から構成される。
キーの終わりを示す文字は、前に \ を付けることによりキーに含めることも できる。キーの後ろの空白はすべてスキップされる。 キーの後ろの最初の非空白文字が = または : である場合は、これらのキーは 無視され、そのあとの空白文字もすべてスキップされる。 行内のそれ以外の文字はすべて、関連した要素文字列の一部となる。 要素文字列内では、ASCII エスケープシーケンス 、 たとえば、次の 4 行はそれぞれキー Truth と、関連した要素値 Beauty を表す。
Truth = Beauty また、次の 3 行は 1 つのプロパティを表す。
fruits apple, banana, pear, \
cheeses
|
|
プロパティのキーのリストを vector で返す メインプロパティリストに同じ名前のキーが見つからない場合は、デフォルトの プロパティリストにある個別のキーを含む、このプロパティリストにあるすべて のキーのリストを返します。
|
|
プロパティリストを指定されたストリームに保存する 推奨されていません。プロパティリストの保存方法としては、 store(ostream out, string header) メソッドの使用が推奨される。 このメソッドは Java Properties との互換性のために定義されている。
|
|
Properties に value を key について登録する. Properties に value を key について登録する。 すでに key に対する値を持っている場合、戻り値に古い値を返す。
|
|
|
|
プロパティリストを出力ストリームへ保存する Properties テーブル内のプロパティリスト (キーと要素のペア) を、load メソッドを使って Properties テーブルにロードするのに適切なフォーマットで 出力ストリームに書き込みます。 Properties テーブル内のプロパティリスト (キーと要素のペア) を、load メソッドを使って Properties テーブルにロードするのに適切なフォーマットで 出力ストリームに書き込みます。ストリームは、ISO 8859-1 文字 エンコーディングを使用して書き込まれます。 Properties テーブル (存在する場合) のデフォルトテーブルからの プロパティは、このメソッドによっては書き込まれません。 header 引数が null でない場合は、ASCII 文字の #、header の文字列、 および行区切り文字が最初に出力ストリームに書き込まれます。このため、 header は識別コメントとして使うことができます。 次に、ASCII 文字の #、現在の日時 (Date の toString メソッドによって 現在時刻が生成されるのと同様)、および Writer によって生成される行区切り からなるコメント行が書き込まれます。
続いて、Properties テーブル内のすべてのエントリが 1 行ずつ書き出されます。 各エントリのキー文字列、ASCII 文字の =、関連した要素文字列が書き込まれま す。要素文字列の各文字は、エスケープシーケンスとして描画する必要があるか どうか確認されます。ASCII 文字の \、タブ、改行、および復帰はそれぞれ \、 、 エントリが書き込まれたあとで、出力ストリームがフラッシュされます。 出力ストリームはこのメソッドから復帰したあとも開いたままです。 |
|
|