次の方法で共有


CSimpleStringT::GetBufferSetLength

更新 : 2007 年 11 月

CSimpleStringT オブジェクト用の内部文字バッファへのポインタを返します。このとき、nLength で指定された長さに合うように、バッファの長さを必要に応じて切り詰めたり伸ばしたりします。

PXSTR GetBufferSetLength(
   int nLength
);

パラメータ

  • nLength
    CSimpleStringT の文字バッファの正確なサイズ (文字数)。

戻り値

オブジェクトの (NULL で終わる) 文字バッファへの PXSTR ポインタ。

解説

CSimpleStringT オブジェクトの内部バッファの指定された長さを取得するには、このメソッドを呼び出します。戻り値の PXSTR ポインタは定数型 (const) ではありません。したがって、CSimpleStringT の内容を直接変更できます。

GetBufferSetLength で返されたポインタを使用して文字列の内容を変更する場合は、CSimpleStringT の他のメンバ メソッドを使用する前に、ReleaseBuffer を呼び出す必要があります。

ReleaseBuffer の呼び出し後に CSimpleStringT の操作を行うと、CSimpleStringT のバッファが再割り当てされる場合があります。このような場合、GetBufferSetLength で返されたアドレスは無効になります。CSimpleStringT の長さを変更しないと、バッファは再割り当てされません。

CSimpleStringT オブジェクトを破棄すると、バッファ メモリは自動的に解放されます。

文字列長を把握している限り、終端に NULL 文字を付け加える必要はありません。ただし、ReleaseBuffer でバッファを解放するときは、最終的な文字列長を指定する必要があります。ReleaseBuffer の呼び出し時に終端に NULL を付け加える場合は、ReleaseBuffer に引数として –1 (既定値) を渡します。この引数を受け取ると、ReleaseBufferstrlen を実行してバッファの長さを決定します。

参照カウントの詳細については、次のトピックを参照してください。

使用例

次の例は CSimpleStringT::GetBufferSetLength の使い方を示しています。

CSimpleString str(pMgr);
LPTSTR pstr = str.GetBufferSetLength(3);
pstr[0] = _T('C');
pstr[1] = _T('u');
pstr[2] = _T('p');

// No need for trailing zero or call to ReleaseBuffer()
// because GetBufferSetLength() set it for us.

str += _T(" soccer is best!");
ASSERT(_tcscmp(str, _T("Cup soccer is best!")) == 0);   

必要条件

ヘッダー : atlsimpstr.h

参照

参照

CSimpleStringT クラス

CSimpleStringT::GetBuffer

CSimpleStringT::ReleaseBuffer

その他の技術情報

CSimpleStringT のメンバ