次の方法で共有


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 検索アルゴリズムを使用してリソース文字列を検索します。

解説

CStringTCSimpleStringT クラスを継承します。文字の操作、順序付け、検索などの拡張機能は CStringT によって実装されます。

5bzxfsea.alert_note(ja-jp,VS.90).gifメモ :

CStringT オブジェクトには例外をスローする機能があります。なんらかの理由により CStringT オブジェクトがメモリ不足になると、例外がスローされます。

CStringT オブジェクトは可変長の文字列から構成されます。CStringT クラスには、BASIC に類似した構文を使用する関数や演算子が用意されています。簡易化されたメモリ管理と合わせて、連結演算子や比較演算子により、通常の文字配列よりも CStringT オブジェクトの方が扱いやすくなっています。

5bzxfsea.alert_note(ja-jp,VS.90).gifメモ :

null 文字を埋め込んだ CStringT インスタンスを作成することは可能ですが、お勧めはしません。null 文字が埋め込まれた CStringT オブジェクトに対してメソッドまたは演算子を呼び出すと、予期しない結果が生じることがあります。

BaseType のパラメータと StringTraits のパラメータをさまざまに組み合わせることにより、CStringT オブジェクトは以下のような型になります。これらの型は、ATL ライブラリによって定義済みです。

ATL アプリケーションを使用する場合

CStringCStringA、および CStringW は、ユーザーの DLL からではなく、MFC DLL (MFC90.DLL) からエクスポートされます。これは CStringT の多重定義を防止するためです。

5bzxfsea.alert_note(ja-jp,VS.90).gifメモ :

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 のいずれか) へのポインタ。

5bzxfsea.alert_note(ja-jp,VS.90).gifメモ :

CString の非公開のメソッド (AssignCopy など) を使用したコードは、CStringT の公開メソッド (GetBufferReleaseBuffer など) を使用するコードで置換する必要があります。

必要条件

ヘッダー

用途

cstringt.h

MFC 専用文字列オブジェクト

atlstr.h

非 MFC 文字列オブジェクト

参照

参照

階層図

その他の技術情報

CStringT のメンバ

ATL/MFC の共有クラス