TNB Library
公開メンバ関数 | 静的公開メンバ関数 | 全メンバ一覧
CTinyStringFormater クラス

簡易文字列書式. [詳解]

#include <TnbTinyStringFormater.h>

+ CTinyStringFormater の継承関係図

公開メンバ関数

void Add (const TYP *lpsz)
 [追加] 文字列追加. [詳解]
 
void Add (const TYP *lpsz, size_t len)
 [追加] 文字列追加. [詳解]
 
void AddChar (TCHAR c)
 [追加] 一文字追加. [詳解]
 
void AddFormatHexInt (DWORD value, size_t width)
 [追加] DWORD 型 HEX 追加. [詳解]
 
void AddFormatInt (int value)
 [追加] int 型追加. [詳解]
 
void AddFormatInt (int value, size_t width)
 [追加] int 型追加. [詳解]
 
template<typename XX >
void AddLiteral (const XX &literal)
 [追加] 文字列リテラル追加. [詳解]
 
void AddTerminateChar (void)
 [追加] 終端文字追加. [詳解]
 
size_t GetLength (void) const
 [取得] 文字列数取得. [詳解]
 
size_t GetRemainingLength (void) const
 [取得] ワークメモリ残り取得. [詳解]
 
void Initialize (TYP *_P, size_t len)
 [設定] 初期化. [詳解]
 
 operator const TYP * (void) const
 [取得] 文字列取得. [詳解]
 

静的公開メンバ関数

static INT_PTR FormatDword (TYP *_P, DWORD value)
 [設定] DWORD型文字列化. [詳解]
 
static void FormatDword (TYP *_P, DWORD value, size_t width)
 [設定] DWORD型文字列化(文字数指定). [詳解]
 
static void FormatDword0 (TYP *_P, DWORD value, size_t width)
 [設定] DWORD型文字列化(0パディング付き). [詳解]
 
static void FormatHex (TYP *_P, DWORD value, size_t width)
 [設定] DWORD型 HEX 文字列化(0パディング付き). [詳解]
 
static INT_PTR FormatInt (TYP *_P, int value)
 [設定] int型文字列化. [詳解]
 
static void FormatInt (TYP *_P, int value, size_t width)
 [設定] int型文字列化(文字数指定). [詳解]
 
static void FormatInt0 (TYP *_P, int value, size_t width)
 [設定] int型文字列化(0パディング付き). [詳解]
 

詳解

簡易文字列書式.

追加される文字数が想定される場合で、速度が求められる場合に、非常に有効な文字列フォーマッターです。

本インスタンス自体バッファを持ちません。ですので、はじめに Initialize() でワークメモリを指定する必要があります。
自動的にメモリサイズを拡張することはしませんので、ご注意ください(その代わり、高速に書式化することが出来ます)。
使用例
#define CR "\r"
// [取得] LOG 文字列取得.
// @param[out] _lpsz 'datax, xxxx, xxxx, xxxx, xxxx, xxxx' の 40 文字
int ToLogString(LPSTR _lpsz, INDEX index)
{
CTinyStringFormater lsf;
lsf.Initialize(_lpsz, 40);
lsf.AddLiteral("data"); lsf.AddFormatInt(index, 1);
lsf.AddLiteral(", "); lsf.AddFormatInt(Get(1, index), 4);
lsf.AddLiteral(", "); lsf.AddFormatInt(Get(2, index), 4);
lsf.AddLiteral(", "); lsf.AddFormatInt(Get(3, index), 4);
lsf.AddLiteral(", "); lsf.AddFormatInt(Get(4, index), 4);
lsf.AddLiteral(", "); lsf.AddFormatInt(Get(5, index), 4);
lsf.Add(CR ,sizeof(CR)); //終端も付加
return lsf.GetLength() - 1;
}
必要ファイル
TnbTinyStringFormater.h
日付
11/08/25 新規作成
11/09/27 AddFormatHexInt() , operator LPCSTR() 追加。
12/03/07 テンプレート化。 UNICODE にも対応。

TnbTinyStringFormater.h479 行目に定義があります。

関数詳解

◆ Add() [1/2]

void Add ( const TYP *  lpsz)
inherited

[追加] 文字列追加.

覚え書き
文字数がわかっている場合、 文字数指定の Add(const TYP*, size_t) を使ったほうが高速です。
引数
lpsz文字列.

TnbTinyStringFormater.h172 行目に定義があります。

◆ Add() [2/2]

void Add ( const TYP *  lpsz,
size_t  len 
)
inherited

[追加] 文字列追加.

覚え書き
裏技になりますが、例えば、以下のように指定することで終端を同時に追加可能です。
CTinyStringFormater sf;
sf.Initilaize(...);
sf.Add("ABC", 4); // 一つ多くする。
引数
lpsz文字列.
len文字列長さ

TnbTinyStringFormater.h192 行目に定義があります。

◆ AddChar()

void AddChar ( TCHAR  c)
inherited

[追加] 一文字追加.

引数
c文字.

TnbTinyStringFormater.h147 行目に定義があります。

◆ AddFormatHexInt()

void AddFormatHexInt ( DWORD  value,
size_t  width 
)
inherited

[追加] DWORD 型 HEX 追加.

指定の DWORD 型数値を HEX 文字列化して追加します。

引数
valueDWORD 型数値
width文字数.

TnbTinyStringFormater.h135 行目に定義があります。

◆ AddFormatInt() [1/2]

void AddFormatInt ( int  value)
inherited

[追加] int 型追加.

指定の int型数値を文字列化して追加します。

覚え書き
最大11文字になるので、残りバッファが 11以上あるようにしてください。
引数
valueint 型数値

TnbTinyStringFormater.h123 行目に定義があります。

◆ AddFormatInt() [2/2]

void AddFormatInt ( int  value,
size_t  width 
)
inherited

[追加] int 型追加.

指定の int型数値を文字列化して追加します。

引数
valueint 型数値
width文字数.

TnbTinyStringFormater.h109 行目に定義があります。

◆ AddLiteral()

void AddLiteral ( const XX &  literal)
inherited

[追加] 文字列リテラル追加.

引数
literal文字列リテラル.

TnbTinyStringFormater.h160 行目に定義があります。

◆ AddTerminateChar()

void AddTerminateChar ( void  )
inherited

[追加] 終端文字追加.

他のメソッドでは終端文字は付加されません。

TnbTinyStringFormater.h96 行目に定義があります。

◆ FormatDword() [1/2]

static INT_PTR FormatDword ( TYP *  _P,
DWORD  value 
)
staticinherited

[設定] DWORD型文字列化.

指定の DWORD 型の数値を文字列に変換します。 終端は書かれません。

char buf[100];
buf[r] = 0; //終端
// buf は "100" になる。
static void FormatDword(TYP *_P, DWORD value, size_t width)
[設定] DWORD型文字列化(文字数指定).
引数
[out]_P書式化した文字列を格納する。 最大11文字になる可能性があるので、それ以上のサイズを用意.
[in]valueint型数値.
戻り値
書式化した文字数

TnbTinyStringFormater.h365 行目に定義があります。

◆ FormatDword() [2/2]

static void FormatDword ( TYP *  _P,
DWORD  value,
size_t  width 
)
staticinherited

[設定] DWORD型文字列化(文字数指定).

指定の DWORD 型の数値を指定の文字数の文字列に変換します。 終端は書かれません。

char buf[100];
buf[6] = 0; //終端
// buf は " 100" になる。
引数
[out]_P書式化した文字列を格納する。 width 以上のサイズが必要.
[in]valueDWORD型数値.
[in]width変換後の文字数

TnbTinyStringFormater.h331 行目に定義があります。

◆ FormatDword0()

static void FormatDword0 ( TYP *  _P,
DWORD  value,
size_t  width 
)
staticinherited

[設定] DWORD型文字列化(0パディング付き).

指定の DWORD 型の数値を指定の文字数の文字列に変換します。 終端は書かれません。

char buf[100];
buf[6] = 0; //終端
// buf は "000100" になる。
static void FormatDword0(TYP *_P, DWORD value, size_t width)
[設定] DWORD型文字列化(0パディング付き).
引数
[out]_P書式化した文字列を格納する。 width 以上のサイズが必要.
[in]valueDWORD型数値.
[in]width変換後の文字数

TnbTinyStringFormater.h403 行目に定義があります。

◆ FormatHex()

static void FormatHex ( TYP *  _P,
DWORD  value,
size_t  width 
)
staticinherited

[設定] DWORD型 HEX 文字列化(0パディング付き).

指定の DWORD 型の数値を指定の文字数の文字列に変換します。 終端は書かれません。

char buf[100];
buf[4] = 0; //終端
// buf は "0064" になる。
static void FormatHex(TYP *_P, DWORD value, size_t width)
[設定] DWORD型 HEX 文字列化(0パディング付き).
引数
[out]_P書式化した文字列を格納する。 width 以上のサイズが必要.
[in]valueDWORD 型数値.
[in]width変換後の文字数

TnbTinyStringFormater.h426 行目に定義があります。

◆ FormatInt() [1/2]

static INT_PTR FormatInt ( TYP *  _P,
int  value 
)
staticinherited

[設定] int型文字列化.

指定の int 型の数値を文字列に変換します。 終端は書かれません。

char buf[100];
int r = CTinyStringFormater::FormatInt(buf, -100);
buf[r] = 0; //終端
// buf は "-100" になる。
static void FormatInt(TYP *_P, int value, size_t width)
[設定] int型文字列化(文字数指定).
引数
[out]_P書式化した文字列を格納する。 最大11文字になる可能性があるので、それ以上のサイズを用意.
[in]valueint型数値.
戻り値
書式化した文字数

TnbTinyStringFormater.h260 行目に定義があります。

◆ FormatInt() [2/2]

static void FormatInt ( TYP *  _P,
int  value,
size_t  width 
)
staticinherited

[設定] int型文字列化(文字数指定).

指定の int 型の数値を指定の文字数の文字列に変換します。 終端は書かれません。

char buf[100];
buf[6] = 0; //終端
// buf は " -100" になる。
引数
[out]_P書式化した文字列を格納する。 width 以上のサイズが必要.
[in]valueint型数値.
[in]width変換後の文字数

TnbTinyStringFormater.h218 行目に定義があります。

◆ FormatInt0()

static void FormatInt0 ( TYP *  _P,
int  value,
size_t  width 
)
staticinherited

[設定] int型文字列化(0パディング付き).

指定の int 型の数値を指定の文字数の文字列に変換します。 終端は書かれません。

char buf[100];
buf[6] = 0; //終端
// buf は "-00100" になる。
static void FormatInt0(TYP *_P, int value, size_t width)
[設定] int型文字列化(0パディング付き).
引数
[out]_P書式化した文字列を格納する。 width 以上のサイズが必要.
[in]valueint型数値.
[in]width変換後の文字数

TnbTinyStringFormater.h303 行目に定義があります。

◆ GetLength()

size_t GetLength ( void  ) const
inherited

[取得] 文字列数取得.

戻り値
追加した文字数.

TnbTinyStringFormater.h65 行目に定義があります。

◆ GetRemainingLength()

size_t GetRemainingLength ( void  ) const
inherited

[取得] ワークメモリ残り取得.

戻り値
残りのワークメモリサイズ.

TnbTinyStringFormater.h83 行目に定義があります。

◆ Initialize()

void Initialize ( TYP *  _P,
size_t  len 
)
inherited

[設定] 初期化.

本インスタンスで格納していくワークメモリのアドレスと長さを指定します。

覚え書き
必ずはじめに実行すること。
引数
_P文字列を格納していくワークメモリのアドレス
len_P のワークメモリの長さ

TnbTinyStringFormater.h54 行目に定義があります。

◆ operator const TYP *()

operator const TYP * ( void  ) const
inherited

[取得] 文字列取得.

戻り値
Initialize() で指定したワークメモリ.

TnbTinyStringFormater.h74 行目に定義があります。