次の方法で共有


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 (既定値) を渡します。この引数を受け取ると、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