CStringT クラス
更新 : 2007 年 11 月
このクラスは、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 の多重定義を防止するためです。
メモ : |
---|
Visual C++ .NET 2002 では、MFC 拡張 DLL から CString の派生クラスをエクスポートするときにリンカ エラーが発生していました。この問題を回避するためにサポート技術情報の文書「PRB: Linking Errors When You Import CString-Derived Classes」に示されたコードを適用している場合は、Visual C++ .NET 2003 ではこの問題が修正済みであるため、問題回避のために適用したコードを削除してください。サポート技術情報の文書は、MSDN ライブラリの CD-ROM または https://support.microsoft.com/support で参照できます。 |
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 など) を使用するコードで置換する必要があります。 |
必要条件
ヘッダー |
用途 |
---|---|
cstringt.h |
MFC 専用文字列オブジェクト |
atlstr.h |
非 MFC 文字列オブジェクト |