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

Double Null Terminate(DNT)型文字列管理 [詳解]

#include <TnbDntStr.h>

+ CDoubleNullTerminateStr の継承関係図

公開メンバ関数

void Add (const CStrVector &vstr)
 [設定] 追加. [詳解]
 
void Add (LPCTSTR lpszStr)
 [設定] 追加. [詳解]
 
 CDoubleNullTerminateStr (const CDoubleNullTerminateStr &d)
 コピーコンストラクタ [詳解]
 
 CDoubleNullTerminateStr (LPCTSTR lpszStr=NULL)
 コンストラクタ [詳解]
 
virtual INT_PTR Compare (const CDoubleNullTerminateStr &t) const
 [確認] 比較 [詳解]
 
void Empty (void)
 [設定] 空化 [詳解]
 
LPTSTR GetBuffer (int iLength)
 [操作] 書き込みバッファ要求. [詳解]
 
size_t GetSize (void) const
 [取得] DNT型文字列数種特 [詳解]
 
virtual bool IsEqual (const TNB::CDoubleNullTerminateStr &t) const
 [確認] 比較 [詳解]
 
 operator LPCTSTR (void) const
 [取得] DNT型文字列取得 [詳解]
 
bool operator!= (const TNB::CDoubleNullTerminateStr &t) const
 [確認] 比較 [詳解]
 
INT_PTR operator- (const TNB::CDoubleNullTerminateStr &t) const
 [確認] 比較 [詳解]
 
bool operator< (const TNB::CDoubleNullTerminateStr &t) const
 [確認] 比較 [詳解]
 
bool operator<= (const TNB::CDoubleNullTerminateStr &t) const
 [確認] 比較 [詳解]
 
bool operator== (const TNB::CDoubleNullTerminateStr &t) const
 [確認] 比較 [詳解]
 
bool operator> (const TNB::CDoubleNullTerminateStr &t) const
 [確認] 比較 [詳解]
 
bool operator>= (const TNB::CDoubleNullTerminateStr &t) const
 [確認] 比較 [詳解]
 
void ReleaseBuffer (void)
 [操作] 割り当てたバッファを開放. [詳解]
 
void Set (const CStrVector &vstr)
 [設定] 代入 [詳解]
 
void Set (LPCTSTR lpszStr)
 [設定] 代入 [詳解]
 
void SetDntStr (LPCTSTR lpszzDntStr, TCHAR tcSepaChar=0)
 [設定] 代入 [詳解]
 
CStr ToString (TCHAR tcSepaChar='|') const
 [取得] 文字列取得. [詳解]
 
CStrVector ToStrVector (void) const
 [取得] 文字列配列取得. [詳解]
 

詳解

Double Null Terminate(DNT)型文字列管理

Windows API の引数、戻り値にある、複数の文字列を扱う方法の一つ、
「¥0を仕切り、¥0¥0が終端」という文字列を扱うクラスです。
使用例

    CStrVector vstrSecNames;
    CDoubleNullTerminateStr dntstr;
    DWORD dwRc = ::GetPrivateProfileSectionNames( //DNT型で受ける        
                       dntstr.GetBuffer(65536),
                       65536 , _T("Abc.ini") );
    dntstr.ReleaseBuffer();
    if ( dwRc > 0 )
    {
        vstrSecNames = dntstr.ToStrVector(); //文字列配列の分解     
    }
    return vstrSecNames;
 
覚え書き
printf系や Format() Fmt() の %s に対して、そのまま渡せません。 CStr に変換してから渡してください。
必要ファイル
TnbDntStr.h
日付
06/05/07 新規作成
06/05/19 IComparableT 実装。

TnbDntStr.h60 行目に定義があります。

構築子と解体子

◆ CDoubleNullTerminateStr() [1/2]

CDoubleNullTerminateStr ( LPCTSTR  lpszStr = NULL)

コンストラクタ

引数
lpszStr格納する文字列

TnbDntStr.h69 行目に定義があります。

◆ CDoubleNullTerminateStr() [2/2]

コピーコンストラクタ

引数
dコピー元

TnbDntStr.h78 行目に定義があります。

関数詳解

◆ Add() [1/2]

void Add ( const CStrVector vstr)

[設定] 追加.

保持している DNT型文字列に、配列内容をDNT型で格納します。

引数
vstr追加する CStrVector のインスタンス

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

◆ Add() [2/2]

void Add ( LPCTSTR  lpszStr)

[設定] 追加.

保持している DNT型文字列に指定の通常の文字列を追加します。

引数
lpszStr格納する文字列

TnbDntStr.h163 行目に定義があります。

◆ Compare()

virtual INT_PTR Compare ( const CDoubleNullTerminateStr t) const
virtual

[確認] 比較

引数
t比較対象
戻り値
自分は t と同じ
1以上自分は t より大きい
0未満自分は t より小さい

IComparableT< TNB::CDoubleNullTerminateStr >を実装しています。

TnbDntStr.h89 行目に定義があります。

◆ Empty()

void Empty ( void  )

[設定] 空化

TnbDntStr.h97 行目に定義があります。

◆ GetBuffer()

LPTSTR GetBuffer ( int  iLength)

[操作] 書き込みバッファ要求.

必要サイズの書き込んでもよいバッファを返します。

覚え書き
DNT型文字列を書き込んでください。
使用後、必ず ReleaseBuffer() をコールしてください。
引数
iLength必要な長さ
戻り値
書き込み可能アドレス

TnbDntStr.h267 行目に定義があります。

◆ GetSize()

size_t GetSize ( void  ) const

[取得] DNT型文字列数種特

戻り値
DNT型文字列数(NULL二つ含む長さ)

TnbDntStr.h213 行目に定義があります。

◆ IsEqual()

virtual bool IsEqual ( const TNB::CDoubleNullTerminateStr t) const
virtualinherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t と同じ
false自分は t と異なる

TnbComparable.h73 行目に定義があります。

◆ operator LPCTSTR()

operator LPCTSTR ( void  ) const

[取得] DNT型文字列取得

戻り値
DNT型文字列の参照

TnbDntStr.h204 行目に定義があります。

◆ operator!=()

bool operator!= ( const TNB::CDoubleNullTerminateStr t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t と異なる
false自分は t と同じ

TnbComparable.h98 行目に定義があります。

◆ operator-()

INT_PTR operator- ( const TNB::CDoubleNullTerminateStr t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
自分は t と同じ
1以上自分は t より大きい
0未満自分は t より小さい

TnbComparable.h82 行目に定義があります。

◆ operator<()

bool operator< ( const TNB::CDoubleNullTerminateStr t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t より小さい
false自分は t と同じか大きい

TnbComparable.h106 行目に定義があります。

◆ operator<=()

bool operator<= ( const TNB::CDoubleNullTerminateStr t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t と同じか小さい
false自分は t より大きい

TnbComparable.h114 行目に定義があります。

◆ operator==()

bool operator== ( const TNB::CDoubleNullTerminateStr t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t と同じ
false自分は t と異なる

TnbComparable.h90 行目に定義があります。

◆ operator>()

bool operator> ( const TNB::CDoubleNullTerminateStr t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t より大きい
false自分は t と同じか小さい

TnbComparable.h122 行目に定義があります。

◆ operator>=()

bool operator>= ( const TNB::CDoubleNullTerminateStr t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t と同じか大きい
false自分は t より小さい

TnbComparable.h130 行目に定義があります。

◆ ReleaseBuffer()

void ReleaseBuffer ( void  )

[操作] 割り当てたバッファを開放.

GetBuffer() で割り当てたバッファを開放し、文字列を本クラスに取り込みます。

覚え書き
GetBuffer()で取得した領域に書き込みが終わったら必ず ReleaseBuffer() してください。

TnbDntStr.h277 行目に定義があります。

◆ Set() [1/2]

void Set ( const CStrVector vstr)

[設定] 代入

覚え書き
配列をDNT型で格納します。
引数
vstr代入する CStrVector のインスタンス

TnbDntStr.h152 行目に定義があります。

◆ Set() [2/2]

void Set ( LPCTSTR  lpszStr)

[設定] 代入

引数
lpszStr格納する文字列

TnbDntStr.h141 行目に定義があります。

◆ SetDntStr()

void SetDntStr ( LPCTSTR  lpszzDntStr,
TCHAR  tcSepaChar = 0 
)

[設定] 代入

引数
lpszzDntStr格納する DNT型文字列
tcSepaChar敷居キャラ。省略すると0です。

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

◆ ToString()

CStr ToString ( TCHAR  tcSepaChar = '|') const

[取得] 文字列取得.

保持している DNT型文字列の仕切り文字を指定の文字に置き換え、 通常の文字列に変換し返します。

引数
tcSepaChar仕切り文字、省略すると '|' になります。
戻り値
変換後の普通の文字列。

TnbDntStr.h246 行目に定義があります。

◆ ToStrVector()

CStrVector ToStrVector ( void  ) const

[取得] 文字列配列取得.

保持している DNT型文字列を終端で分離し、 CStrVector に変換し返します。

戻り値
CStrVector

TnbDntStr.h223 行目に定義があります。