Share via


CString の使用

このセクションのトピックでは、CString を使用してプログラミングする方法について説明します。

CStringCStringACStringW は、C++ での一般的な開発に使用できる Microsoft 固有の文字列クラスです。

CStringA オブジェクトは char 型に基づいた文字列データを格納するほか、1 バイト文字列およびマルチバイト (MBCS) 文字列をサポートします。 同様に、CStringW オブジェクトは wchar_t 型に基づいた文字列データを格納するほか、Unicode 文字列をサポートします。 CString オブジェクトは、char 型と wchar_t 型のいずれかをサポートします。 どちらをサポートするかは、コンパイル時に MBCSUNICODE のどちらのシンボルが定義されたかによって決まります。

CString オブジェクトは、CStringData オブジェクトで文字データを保持します。 CString は、null で終わる C スタイルの文字列を受け取りますが、格納される文字データでは null 文字が保持されません。 その代わり、CString は文字列長を追跡します。 CString が null 終端文字を付与するのは、C スタイルの文字列をエクスポートするときです。 格納される文字データの中間に null 文字を挿入することはできますが、予期しない結果が生じることがあります。

CString が使用されるのは、ネイティブ プロジェクト内です。 マネージ コード (C++/CLI) プロジェクトには、System::String を使用します。

CStringCStringACStringWatlstr.h で定義され、MFC90.dll からエクスポートされます。 CStringTcstringt.h で定義されます。 次の一連の文字列クラスは CRT のサポートの有無、MFC ライブラリをリンクすることがなく使用できます。CAtlStringCAtlStringA、および CAtlStringW

CStringCStringACStringW の各クラスは、CStringT というクラス テンプレートのインスタンスです。 これらのクラスには、"特化" というテンプレート プログラミング技法が利用されています。 各クラスは、自身がサポートする文字データの型に応じてテンプレート クラス CStringT を特化することによって typedef として実装されます。 これらのクラスは、独自のメソッドを定義できません。 代わりに、自身が格納する文字データの操作に特化された CStringT で定義されたメソッドを利用します。

CStringCStringACStringW の現在の機能を強化するには、追加機能のある CStringT のサブクラスを作成することを検討してください。 この場合、CString に類似するが、CStringT のサブクラスに基づいたインスタンスを作成します。

このセクションの内容

参照

関連項目

  • 文字列 (ATL/MFC)
    文字列データを管理するいくつかの方法が説明されたトピックへのリンクがあります。

  • Class Template Instantiation
    CString は、特化したクラス テンプレートのインスタンスである CStringT に基づいた typedef です。

文字列 (ATL/MFC)