CString の使用
このセクションのトピックでは、CString を使用してプログラミングする方法について説明します。
CString、CStringA、CStringW は、C++ での一般的な開発に使用できる Microsoft 固有の文字列クラスです。
CStringA オブジェクトは char 型に基づいた文字列データを格納するほか、1 バイト文字列およびマルチバイト (MBCS) 文字列をサポートします。 同様に、CStringW オブジェクトは wchar_t 型に基づいた文字列データを格納するほか、Unicode 文字列をサポートします。 CString オブジェクトは、char 型と wchar_t 型のいずれかをサポートします。 どちらをサポートするかは、コンパイル時に MBCS と UNICODE のどちらのシンボルが定義されたかによって決まります。
CString オブジェクトは、CStringData オブジェクトで文字データを保持します。 CString は、null で終わる C スタイルの文字列を受け取りますが、格納される文字データでは null 文字が保持されません。 その代わり、CString は文字列長を追跡します。 CString が null 終端文字を付与するのは、C スタイルの文字列をエクスポートするときです。 格納される文字データの中間に null 文字を挿入することはできますが、予期しない結果が生じることがあります。
CString が使用されるのは、ネイティブ プロジェクト内です。 マネージ コード (C++/CLI) プロジェクトには、System::String を使用します。
CString、CStringA、CStringW は atlstr.h で定義され、MFC90.dll からエクスポートされます。 CStringT は cstringt.h で定義されます。 次の一連の文字列クラスは CRT のサポートの有無、MFC ライブラリをリンクすることがなく使用できます。CAtlString、CAtlStringA、および CAtlStringW。
CString、CStringA、CStringW の各クラスは、CStringT というクラス テンプレートのインスタンスです。 これらのクラスには、"特化" というテンプレート プログラミング技法が利用されています。 各クラスは、自身がサポートする文字データの型に応じてテンプレート クラス CStringT を特化することによって typedef として実装されます。 これらのクラスは、独自のメソッドを定義できません。 代わりに、自身が格納する文字データの操作に特化された CStringT で定義されたメソッドを利用します。
CString、CStringA、CStringW の現在の機能を強化するには、追加機能のある CStringT のサブクラスを作成することを検討してください。 この場合、CString に類似するが、CStringT のサブクラスに基づいたインスタンスを作成します。
このセクションの内容
CString の基本操作
C リテラル文字列からのオブジェクトの作成、CString 内の各文字へのアクセス、2 つのオブジェクトの結合、CString オブジェクトの比較など、基本的な CString の操作について説明します。文字列データ管理
CString での Unicode と MBCS の使い方について説明します。CString の評価
CString オブジェクトがどのように使用されるかについて説明します。C スタイルの文字列に関連する CString の操作方法
C スタイルの null で終わる文字列などの CString オブジェクトの内容を扱う方法について説明します。BSTR 用のメモリの割り当てと解放
BSTR オブジェクトと COM オブジェクトについてのメモリの使い方について説明します。文字列 : CString の例外の後処理
MFC 3.0 以降で不要になった明示的な後処理について説明します。CString 引数の渡し方
CString オブジェクトを関数の引数や戻り値として利用する方法について説明します。Unicode とマルチバイト文字セット (MBCS: Multibyte Character Set) のサポート
MFC による Unicode と MBCS のサポートについて説明します。
参照
CStringT クラス.
共有 CStringT クラスに関する参照情報を提供します。CSimpleStringT クラス
共有 CSimpleStringT クラスに関する参照情報を提供します。
関連項目
文字列 (ATL/MFC)
文字列データを管理するいくつかの方法が説明されたトピックへのリンクがあります。Class Template Instantiation
CString は、特化したクラス テンプレートのインスタンスである CStringT に基づいた typedef です。