CSimpleStringT::GetBufferSetLength
CSimpleStringT オブジェクト用の内部文字バッファーへのポインターを返します。このとき、nLength で指定された長さに合うように、バッファーの長さを必要に応じて切り詰めたり伸ばしたりします。
PXSTR GetBufferSetLength(
int nLength
);
パラメーター
- nLength
CSimpleStringT の文字バッファーの正確なサイズ (文字数)。
戻り値
オブジェクトの (NULL で終わる) 文字バッファーへの PXSTR ポインター。
解説
CSimpleStringT オブジェクトの内部バッファーの指定された長さを取得するには、このメソッドを呼び出します。戻り値の PXSTR ポインターは定数型 (const) ではありません。したがって、CSimpleStringT の内容を直接変更できます。
GetBufferSetLength で返されたポインターを使用して文字列の内容を変更する場合は、ReleaseBuffer を呼び出して CsimpleStringT の内部状態を更新してから、CSimpleStringT の他のメソッドを使用する必要があります。
ReleaseBuffer の呼び出し後に CSimpleStringT の操作を行うと、CSimpleStringT のバッファーが再割り当てされる場合があります。このような場合、GetBufferSetLength で返されたアドレスは無効になります。CSimpleStringT の長さを変更しないと、バッファーは再割り当てされません。
CSimpleStringT オブジェクトを破棄すると、バッファー メモリは自動的に解放されます。
文字列長を把握している場合は、終端に null 文字を付け加えないでください。最終的な文字列長の指定は、ReleaseBuffer でバッファーを解放するときに行ってください。ReleaseBuffer の呼び出し時に終端に null を付け加える場合は、ReleaseBuffer に引数として –1 (既定値) を渡します。この引数を受け取ると、ReleaseBuffer は strlen を実行してバッファーの長さを決定します。
参照カウントの詳細については、次のトピックを参照してください。
Windows SDK の「Managing Object Lifetimes through Reference Counting (参照カウントによるオブジェクトの有効期間の管理)」
Windows SDK の「Implementing Reference Counting (参照カウントの実装)」
Windows SDK の「Rules for Managing Reference Counts (参照カウントの管理規則)」
使用例
次の例は 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