CFixedStringT クラス
このクラスは、固定文字バッファーを含む文字列オブジェクトを表します。
構文
template<class StringType, int t_nChars>
class CFixedStringT : private CFixedStringMgr, public StringType
パラメーター
StringType
固定文字列オブジェクトの基底クラスとして使用されます。任意の CStringT
ベースの型を指定できます。 たとえば、CString
、CStringA
、および CStringW
です。
t_nChars
バッファーに含まれる文字数。
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CFixedStringT::CFixedStringT | 文字列オブジェクトのコンストラクター。 |
パブリック演算子
名前 | 説明 |
---|---|
CFixedStringT::operator = | 新しい値を CFixedStringT オブジェクトに代入します。 |
解説
このクラスは、CStringT
に基づくカスタム文字列クラスの例です。 2 つのクラスは似ていますが、実装は異なります。 CFixedStringT
と CStringT
の主な違いは次のとおりです。
最初の文字バッファーは、オブジェクトの一部として割り当てられ、サイズは t_nChars です。 これにより、
CFixedString
オブジェクトが連続メモリ チャンクを占有でき、パフォーマンスが向上します。 ただし、CFixedStringT
オブジェクトの内容が t_nChars を超えた場合、バッファーが動的に割り当てられます。CFixedStringT
オブジェクトの文字バッファーは常に同じ長さ (t_nChars) です。CStringT
オブジェクトのバッファー サイズに制限はありません。CFixedStringT
のメモリ マネージャーは、複数のCFixedStringT
オブジェクト間で CStringData オブジェクトを共有できないようにカスタマイズされます。CStringT
オブジェクトには、この制限はありません。
CFixedStringT
のカスタマイズおよび一般的な文字列オブジェクトのメモリ管理の詳細については、「CStringT を使用したメモリ管理」を参照してください。
継承階層
IAtlStringMgr
StringType
CFixedStringMgr
CFixedStringT
要件
ヘッダー: cstringt.h
CFixedStringT::CFixedStringT
CFixedStringT
オブジェクトを構築します。
CFixedStringT() throw();
explicit CFixedStringT(IAtlStringMgr* pStringMgr) throw();
CFixedStringT(const CFixedStringT<StringType, t_nChars>& strSrc);
CFixedStringT(const StringType& strSrc);
CFixedStringT(const StringType::XCHAR* pszSrc);
explicit CFixedStringT(const StringType::YCHAR* pszSrc);
explicit CFixedStringT(const unsigned char* pszSrc);
パラメーター
pszSrc
この CFixedStringT
オブジェクトにコピーする、null で終了している文字列。
strSrc
この CFixedStringT
オブジェクトにコピーする既存の CFixedStringT
オブジェクト。
pStringMgr
CFixedStringT
オブジェクトのメモリ マネージャーへのポインター。 IAtlStringMgr
と、CFixedStringT
のメモリ管理の詳細については、「CStringT を使用したメモリ管理」を参照してください。
解説
コンストラクターによって入力データが割り当てられた新しいストレージにコピーされるので、メモリ例外が発生する可能性があることに注意してください。 これらのコンストラクターの一部は、変換関数として機能します。
CFixedStringT::operator =
既存の CFixedStringT
オブジェクトを新しいデータで再初期化します。
CFixedStringT<StringType, t_nChars>& operator=(
const CFixedStringT<StringType, t_nChars>& strSrc);
CFixedStringT<StringType, t_nChars>& operator=(const char* pszSrc);
CFixedStringT<StringType, t_nChars>& operator=(const wchar_t* pszSrc);
CFixedStringT<StringType, t_nChars>& operator=(const unsigned char* pszSrc);
CFixedStringT<StringType, t_nChars>& operator=(const StringType& strSrc);
パラメーター
pszSrc
この CFixedStringT
オブジェクトにコピーする、null で終了している文字列。
strSrc
この CFixedStringT
オブジェクトにコピーする既存の CFixedStringT
。
解説
代入演算子を使用するたびに、メモリの例外が発生する可能性があることに注意してください。これは、多くの場合、結果として得られる CFixedStringT
オブジェクトを保持するために新しいストレージが割り当てられるためです。