CStringT クラス
このクラスは、CStringT オブジェクトを表します。
template< typename BaseType, class StringTraits >
class CStringT :
public CSimpleStringT< BaseType, _CSTRING_IMPL_::_MFCDLLTraitsCheck< BaseType, StringTraits > ::c_bIsMFCDLLTraits>
パラメーター
BaseType
文字列クラスの文字型。 次のいずれかの値を指定します。char (ANSI 文字列の場合)。
wchar_t (Unicode 文字列の場合)。
TCHAR (ANSI 文字列と Unicode 文字列の両方の場合)。
StringTraits
文字列クラスが C ランタイム (CRT: C Run-Time) ライブラリのサポートを必要とするかどうか、および文字列リソースが置かれている場所を決定する値。 次のいずれかの値を指定します。StrTraitATL< wchar_t | char | TCHAR, ChTraitsCRT< wchar_t | char | TCHAR > >
クラスは CRT のサポートを必要とし、m_hInstResource (アプリケーションのモジュール クラスのメンバー) によって指定されたモジュールでリソース文字列を検索します。
StrTraitATL< wchar_t | char | TCHAR, ChTraitsOS< wchar_t | char | TCHAR > >
クラスは CRT のサポートを必要とせず、m_hInstResource (アプリケーションのモジュール クラスのメンバー) によって指定されたモジュールでリソース文字列を検索します。
StrTraitMFC< wchar_t | char | TCHAR, ChTraitsCRT< wchar_t | char | TCHAR > >
クラスは CRT のサポートを必要とし、標準の MFC 検索アルゴリズムを使用してリソース文字列を検索します。
StrTraitMFC< wchar_t | char | TCHAR, ChTraitsOS< wchar_t | char | TCHAR > >
クラスは CRT のサポートを必要とせず、標準の MFC 検索アルゴリズムを使用してリソース文字列を検索します。
解説
CStringT は CSimpleStringT クラスを継承します。 文字の操作、順序付け、検索などの拡張機能は CStringT によって実装されます。
注意
CStringT オブジェクトには例外をスローする機能があります。 なんらかの理由により CStringT オブジェクトがメモリ不足になると、例外がスローされます。
CStringT オブジェクトは、可変長の文字列から構成されます。 CStringT には、Basic に似た構文を使用する関数と演算子が用意されています。 簡易化されたメモリ管理と合わせて、連結演算子や比較演算子により、通常の文字配列よりも CStringT オブジェクトの方が扱いやすくなっています。
注意
null 文字を埋め込んだ CStringT インスタンスを作成することは可能ですが、お勧めはしません。 null 文字が埋め込まれた CStringT オブジェクトに対してメソッドまたは演算子を呼び出すと、予期しない結果が生じることがあります。
BaseType のパラメーターと StringTraits のパラメーターをさまざまに組み合わせることにより、CStringT オブジェクトは以下のような型になります。これらの型は、ATL ライブラリによって定義済みです。
ATL アプリケーションを使用する場合
CString、CStringA、および CStringW は、ユーザーの DLL からではなく、MFC DLL (MFC90.DLL) からエクスポートされます。 これは CStringT の多重定義を防止するためです。
注意
エクスポートするときにリンカー エラーが発生した場合、CString-MFC 拡張 DLL の Visual C からクラスを派生します。NET 2002 と回避策を適用しているこれは、Visual C では修正されているためサポート技術情報の記事では、「リンク エラーとき、インポートの CString-Derived クラス」(Q309801)、の説明に従って回避策コードを削除する必要があります。NET 2003。 サポート技術情報の文書は、MSDN ライブラリ CD-ROM または https://support.microsoft.com/default.aspx で参照できます。
MFC ベースのアプリケーション内では、次の文字列型を使用できます。
CStringT 型 |
宣言 |
---|---|
CStringA |
CRT サポート機能を持つ ANSI 文字型の文字列。 |
CStringW |
CRT サポート機能を持つ Unicode 文字型の文字列。 |
CString |
CRT サポート機能を持つ ANSI 文字型と Unicode 文字型の両方。 |
ATL_CSTRING_NO_CRT が定義されているプロジェクトでは、次の文字列型を使用できます。
CStringT 型 |
宣言 |
---|---|
CAtlStringA |
CRT サポート機能のない ANSI 文字型の文字列。 |
CAtlStringW |
CRT サポート機能のない Unicode 文字型の文字列。 |
CAtlString |
CRT サポート機能のない ANSI 文字型と Unicode 文字型の両方。 |
ATL_CSTRING_NO_CRT が定義されていないプロジェクトでは、次の文字列型を使用できます。
CStringT 型 |
宣言 |
---|---|
CAtlStringA |
CRT サポート機能を持つ ANSI 文字型の文字列。 |
CAtlStringW |
CRT サポート機能を持つ Unicode 文字型の文字列。 |
CAtlString |
CRT サポート機能を持つ ANSI 文字型と Unicode 文字型の両方。 |
また、CString オブジェクトは次の特性を持っています。
CStringT オブジェクトは、連結操作で拡張できます。
CStringT オブジェクトは値に基づいて操作が決定されます。CStringT オブジェクトは文字列へのポインターとしてではなく、実際の文字列として考えてください。
関数の引数 PCXSTR の代わりに自由に CStringT を使用できます。
文字列バッファーに対してカスタムのメモリ管理を実装できます。 詳細については、「メモリ管理と CStringT」を参照してください。
CStringT 定義済みの型
CStringT は、テンプレートの引数を使用してサポートされる文字型 (wchar_t または char) を定義するため、場合によってはメソッドのパラメーターの型が複雑になることがあります。 このように型が複雑化するのを避けるため、一連の定義済みの型が定義されており、CStringT クラス全体で使用されます。 型の一覧を次に示します。
[名前] |
説明 |
---|---|
XCHAR |
CStringT オブジェクトと同じ文字型の 1 文字 (wchar_t または char のいずれか)。 |
YCHAR |
CStringT オブジェクトと異なる文字型の 1 文字 (wchar_t または char のいずれか)。 |
PXSTR |
CStringT オブジェクトと同じ文字型の文字列 (wchar_t または char のいずれか) へのポインター。 |
PYSTR |
CStringT オブジェクトと異なる文字型の文字列 (wchar_t または char のいずれか) へのポインター。 |
PCXSTR |
CStringT オブジェクトと同じ文字型の const 文字列 (wchar_t または char のいずれか) へのポインター。 |
PCYSTR |
CStringT オブジェクトと異なる文字型の const 文字列 (wchar_t または char のいずれか) へのポインター。 |
注意
CString の非公開のメソッド (AssignCopy など) を使用したコードは、CStringT の公開メソッド (GetBuffer や ReleaseBuffer など) を使用するコードで置換する必要があります。 これらのメソッドから継承されたCSimpleStringT。
必要条件
ヘッダー |
用途 |
---|---|
cstringt.h |
MFC 専用文字列オブジェクト |
atlstr.h |
非 MFC 文字列オブジェクト |