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 Run-Time (CRT) ライブラリをサポートする必要があるかどうか、および文字列リソースが配置されているかどうかを判断します。 以下のいずれかを指定できます。

  • 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>>

    クラスは、標準の MFC 検索アルゴリズムを使用して、CRT のサポートを必要とせず、リソース文字列を検索します。

メンバー

パブリック コンストラクター

名前 [説明]
CStringT::CStringT CStringT さまざまな方法でオブジェクトを構築します。
CStringT::~CStringT オブジェクトを破棄 CStringT します。

パブリック メソッド

名前 [説明]
CStringT::AllocSysString BSTRデータからを割り当て CStringT ます。
CStringT::AnsiToOem ANSI 文字セットから OEM 文字セットへのインプレース変換を行います。
CStringT::AppendFormat 既存のオブジェクトに書式付きデータを追加 CStringT します。
CStringT::Collate 2つの文字列を比較します (大文字と小文字を区別し、ロケール固有の情報を使用します)。
CStringT::CollateNoCase 2つの文字列を比較します (大文字と小文字は区別しません。はロケール固有の情報を使用します)。
CStringT::Compare 2つの文字列を比較します (大文字と小文字は区別されます)。
CStringT::CompareNoCase 2つの文字列を比較します (大文字と小文字は区別しません)。
CStringT::Delete 1つ以上の文字を文字列から削除します。
CStringT::Find 大きな文字列内の文字または部分文字列を検索します。
CStringT::FindOneOf セットから最初に一致する文字を検索します。
CStringT::Format 文字列をそのように書式設定し sprintf ます。
CStringT::FormatMessage メッセージ文字列の書式を設定します。
CStringT::FormatMessageV 可変個引数リストを使用してメッセージ文字列を書式設定します。
CStringT::FormatV 引数の変数リストを使用して文字列を書式設定します。
CStringT::GetEnvironmentVariable 指定された環境変数の値に文字列を設定します。
CStringT::Insert 文字列内の指定したインデックス位置に1つの文字または部分文字列を挿入します。
CStringT::Left 文字列の左側の部分を抽出します。
CStringT::LoadString CStringT Windows リソースから既存のオブジェクトを読み込みます。
CStringT::MakeLower この文字列のすべての文字を小文字に変換します。
CStringT::MakeReverse 文字列を反転させます。
CStringT::MakeUpper この文字列のすべての文字を大文字に変換します。
CStringT::Mid 文字列の中間部分を抽出します。
CStringT::OemToAnsi OEM 文字セットから ANSI 文字セットへのインプレース変換を行います。
CStringT::Remove 文字列から指定された文字を削除します。
CStringT::Replace 指定された文字を他の文字に置き換えます。
CStringT::ReverseFind 大きい文字列内の文字を検索します。最後から開始します。
CStringT::Right 文字列の右側の部分を抽出します。
CStringT::SetSysString BSTRオブジェクトのデータを使用して、既存のオブジェクトを設定 CStringT します。
CStringT::SpanExcluding 文字列から、で識別される文字のセットに含まれていない文字を抽出し pszCharSet ます。
CStringT::SpanIncluding セット内の文字のみを含む部分文字列を抽出します。
CStringT::Tokenize 対象の文字列内の指定されたトークンを抽出します。
CStringT::Trim 文字列から先頭と末尾の空白文字をすべてトリミングします。
CStringT::TrimLeft 文字列から先頭の空白文字をトリミングします。
CStringT::TrimRight 文字列から末尾の空白文字をトリミングします。

演算子

名前 [説明]
CStringT::operator = オブジェクトに新しい値を割り当て CStringT ます。
CStringT::operator + 2つの文字列、または1つの文字と文字列を連結します。
CStringT::operator += 新しい文字列を既存の文字列の末尾に連結します。
CStringT::operator == 2つの文字列が論理的に等しいかどうかを判断します。
CStringT::operator != 2つの文字列が論理的に等価でないかどうかを判断します。
CStringT::operator < 演算子の左辺の文字列が右辺の文字列より小さいかどうかを判断します。
CStringT::operator > 演算子の左辺の文字列が右側の文字列より大きいかどうかを判断します。
CStringT::operator <= 演算子の左辺の文字列が右側の文字列以下であるかどうかを判断します。
CStringT::operator >= 演算子の左辺の文字列が、右側の文字列以上かどうかを判断します。

Remarks

CStringT CSimpleStringT クラスから継承します。 文字操作、順序付け、検索などの高度な機能は、によって実装され CStringT ます。

注意

CStringT オブジェクトは例外をスローできます。 これは、 CStringT 何らかの理由でオブジェクトのメモリが不足した場合に発生します。

オブジェクトは、 CStringT 可変長の文字シーケンスで構成されます。 CStringT Basic と同様の構文を使用して、関数と演算子を提供します。 連結演算子と比較演算子を使用すると、メモリ管理が簡素化さ CStringT れ、通常の文字配列よりもオブジェクトを簡単に使用できるようになります。

注意

埋め込まれた null 文字を含むインスタンスを作成することもでき CStringT ますが、それに対しては使用しないことをお勧めします。 Null 文字が埋め込まれているオブジェクトに対してメソッドと演算子を呼び出すと、 CStringT 意図しない結果が生じる可能性があります。

パラメーターとパラメーターのさまざまな組み合わせを使用することにより BaseType StringTraitsCStringT オブジェクトは、ATL ライブラリによって事前定義されている次の型になります。

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

CStringCStringA 、および CStringW は、ユーザー dll からではなく、MFC dll (MFC90.DLL) からエクスポートされます。 これは、が CStringT 複数回定義されるのを防ぐために行われます。

注意

CStringT を使用した文字列クラスのエクスポート」で説明されているリンカーエラーの回避策がコードに含まれている場合は、そのコードを削除する必要があります。 これは不要になりました。

MFC ベースのアプリケーションでは、次の文字列型を使用できます。

CStringT の種類 宣言
CStringA CRT をサポートする ANSI 文字型の文字列。
CStringW CRT をサポートする Unicode 文字型の文字列。
CString CRT をサポートする ANSI と Unicode の両方の文字型。

次の文字列型は、が定義されているプロジェクトで使用でき ATL_CSTRING_NO_CRT ます。

CStringT の種類 宣言
CAtlStringA CRT をサポートしていない ANSI 文字型の文字列。
CAtlStringW CRT をサポートしない Unicode 文字型の文字列。
CAtlString ANSI と Unicode の両方の文字型は、CRT をサポートしていません。

次の文字列型は、が ATL_CSTRING_NO_CRT 定義されていないプロジェクトで使用できます。

CStringT の種類 宣言
CAtlStringA CRT をサポートする ANSI 文字型の文字列。
CAtlStringW CRT をサポートする Unicode 文字型の文字列。
CAtlString CRT をサポートする ANSI と Unicode の両方の文字型。

CString オブジェクトには、次の特性もあります。

  • CStringT オブジェクトは、連結操作によって拡張できます。

  • CStringT オブジェクトは、"値のセマンティクス" に従います。 オブジェクトは、 CStringT 文字列へのポインターとしてではなく、実際の文字列と考えることができます。

  • 関数の引数には、オブジェクトを自由に置き換えることができ CStringT PCXSTR ます。

  • 文字列バッファーのカスタムメモリ管理。 詳細については、「メモリ CStringT 管理」と「」を参照してください。

CStringT の定義済みの型

CStringT はテンプレート引数を使用して、サポートされている文字型 (または) を定義するため wchar_t char 、メソッドパラメーターの型が複雑になることがあります。 この問題を簡単にするために、定義済みの型のセットがクラス全体で定義および使用され CStringT ます。 次の表に、さまざまな種類の一覧を示します。

名前 [説明]
XCHAR wchar_t char オブジェクトと同じ文字型の単一の文字 (または) CStringT
YCHAR オブジェクトとは逆の文字型を持つ単一の文字 ( wchar_t または char ) CStringT
PXSTR * * * * * * wchar_t char オブジェクトと同じ文字型を持つ文字列 (または) へのポインター CStringT
PYSTR wchar_t char オブジェクトとは逆の文字型を持つ文字列 (または) へのポインター CStringT
PCXSTR const wchar_t char オブジェクトと同じ文字型を持つ文字列 (または) へのポインター CStringT
PCYSTR const wchar_t char オブジェクトとは逆の文字型を持つ文字列 (または) へのポインター CStringT

注意

のドキュメントに記載されていないメソッド (など) を以前に使用していたコードは CString AssignCopy 、の次の文書化されたメソッド (やなど) を使用するコードに置き換える必要があり CStringT GetBuffer ReleaseBuffer ます。 これらのメソッドは、から継承され CSimpleStringT ます。

継承階層

CSimpleStringT

CStringT

必要条件

Header 用途
cstringt.h MFC 専用の文字列オブジェクト
atlstr.h 非 MFC 文字列オブジェクト

CStringT::AllocSysString

型のオートメーション互換の文字列を割り当て、 BSTR オブジェクトの内容を、 CStringT 終端の null 文字も含めて、その文字列にコピーします。

BSTR AllocSysString() const;

戻り値

新しく割り当てられた文字列。

Remarks

MFC プログラムでは、メモリが不足している場合に CMemoryException クラスがスローされます。 ATL プログラムでは、 CAtlException がスローされます。 通常、この関数は、オートメーション用の文字列を返すために使用されます。

通常、この文字列がパラメーターとして COM 関数に渡される場合は、 [in] 呼び出し元が文字列を解放する必要があります。 これは、Windows SDK で説明されているように、を使用して行うことができ SysFreeString ます。 詳細についてBSTR 、「のメモリの割り当てと解放」を参照してください。

Windows での OLE 割り当て関数の詳細については、Windows SDK の「」を参照してください SysAllocString

次の例は、CStringT::AllocSysString の使い方を示しています。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str(_T("This is a test string!"));
BSTR bstr = str.AllocSysString();

// bstr now contains "This is a test string!", and can be
// passed to any OLE function requiring a BSTR.
// Normally, if you pass the BSTR, you will
// need to free the string after returning from the function call.   

CStringT::AnsiToOem

このオブジェクトのすべての文字を CStringT ANSI 文字セットから OEM 文字セットに変換します。

void AnsiToOem();

Remarks

関数 _UNICODE は、が定義されている場合は使用できません。

// OEM character 252 on most IBM-compatible computers in
// Western countries/regions is superscript n, as in 2^n.
// Converting it to the ANSI English charset results in a
// normal character 'n', which is the closest possible
// representation.

CStringT<char, StrTraitATL<char, ChTraitsCRT<char>>> str((WCHAR)252);
str.OemToAnsi();
ASSERT(str[0] == 'n');

// Be aware that in OEM to ANSI conversion the 'n'
// from the previous result cannot be converted back to
// a supsercript n because the system does not know what
// the character's value truly was.
str.AnsiToOem();
ASSERT(str[0] != 252);
ASSERT(str[0] == 'n');   

CStringT::AppendFormat

既存のオブジェクトに書式付きデータを追加 CStringT します。

void __cdecl AppendFormat(PCXSTR pszFormat, [, argument] ...);
void __cdecl AppendFormat(UINT nFormatID, [, argument] ...);

パラメーター

pszFormat
書式指定文字列。

nFormatID
書式制御文字列を含む文字列リソース識別子。

argument
省略可能な引数。

Remarks

この関数は、に一連の文字と値を書式設定して追加し CStringT ます。 各省略可能な引数 (存在する場合) は、の対応する書式指定に従って変換され、によって識別される pszFormat 文字列リソースから追加され nFormatID ます。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString str = _T("Some data:\t");

str.AppendFormat(_T("X value = %.2f\n"), 12345.12345);
_tprintf_s(_T("%s"), (LPCTSTR) str);

CStringT::Collate

汎用テキスト関数を使用して2つの文字列を比較し _tcscoll ます。

int Collate(PCXSTR psz) const throw();

パラメーター

psz
比較に使用されるもう1つの文字列。

戻り値

文字列が同一の場合は 0 CStringT 。このオブジェクトがより小さい場合は 0 psz を <、この CStringT オブジェクトがより大きい場合は0を > psz します。

Remarks

で定義されている汎用テキスト関数は _tcscoll TCHAR.H strcollwcscoll _mbscoll コンパイル時に定義された文字セットに応じて、、、またはのいずれかにマップされます。 各関数は、現在使用中のコードページに従って、大文字と小文字を区別して文字列を比較します。 詳細については、「」、「」、「」、「 strcoll wcscoll _mbscoll _strcoll_l _wcscoll_l _mbscoll_l」を参照してください。

CStringT::CollateNoCase

汎用テキスト関数を使用して2つの文字列を比較し _tcscoll ます。

int CollateNoCase(PCXSTR psz) const throw();

パラメーター

psz
比較に使用されるもう1つの文字列。

戻り値

文字列が同一である場合は 0 (大文字と小文字を区別しない)、このオブジェクトがより小さい場合は 0 (大文字と小文字を区別しない)、 CStringT psz またはこの CStringT オブジェクトがより大きい psz (大文字と小文字を区別しない) 場合 > は0を < ます。

Remarks

で定義されている汎用テキスト関数は _tcscoll TCHAR.H stricollwcsicoll _mbsicoll コンパイル時に定義された文字セットに応じて、、、またはのいずれかにマップされます。 各関数は、現在使用中のコードページに従って、文字列の大文字と小文字を区別しない比較を行います。 詳細については、「」、「」、「」、「」を参照してください strcoll wcscoll _mbscoll _strcoll_l _wcscoll_l _mbscoll_l

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString str1 = _T("Co-Op");
CAtlString str2 = _T("con");

int n;

// Collation uses language rules, such as ignoring dashes.
// NoCase version ignores case.
n = str1.CollateNoCase(str2);
ASSERT(n < 0);

// Comparison is a strict ASCII comparison with no language rules
// but still ignores case in NoCase version.
n = str1.CompareNoCase(str2);
ASSERT(n < 0);   

CStringT::Compare

2つの文字列を比較します (大文字と小文字は区別されます)。

int Compare(PCXSTR psz) const;

パラメーター

psz
比較に使用されるもう1つの文字列。

戻り値

文字列が同一の場合は 0 CStringT 。このオブジェクトがより小さい場合は 0 psz を <、この CStringT オブジェクトがより大きい場合は0を > psz します。

Remarks

で定義されている汎用テキスト関数は _tcscmp TCHAR.H strcmpwcscmp _mbscmp コンパイル時に定義された文字セットに応じて、、、またはのいずれかにマップされます。 各関数は、文字列の大文字と小文字を区別した比較を行い、ロケールの影響を受けません。 詳細については、「」、「」を参照して strcmp wcscmp _mbscmp ください。

文字列に埋め込まれた null が含まれている場合、比較のために、文字列は最初の埋め込み null 文字で切り捨てられると見なされます。

次の例は、CStringT::Compare の使い方を示しています。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString s1(_T("abc"));
CAtlString s2(_T("abd"));
ASSERT(s1.Compare(s2) < 0);    // Compare with another CAtlString.
ASSERT(s1.Compare(_T("abe")) < 0); // Compare with LPTSTR string.   

CStringT::CompareNoCase

2つの文字列を比較します (大文字と小文字は区別しません)。

int CompareNoCase(PCXSTR psz) const throw();

パラメーター

psz
比較に使用されるもう1つの文字列。

戻り値

文字列が同一である場合は 0 (大文字と小文字を区別しない)、このオブジェクトがより小さい場合は 0 (大文字と小文字を区別しない)、 CStringT psz またはこの CStringT オブジェクトがより大きい psz (大文字と小文字を区別しない) 場合 >は0を <ます。

Remarks

で定義されている汎用テキスト関数は _tcsicmp TCHAR.H _stricmp_wcsicmp _mbsicmp コンパイル時に定義された文字セットに応じて、またはのいずれかにマップされます。 各関数は、文字列の大文字と小文字を区別しない比較を行います。 比較はロケールの側面によって異なりますが、では LC_CTYPE 行われません LC_COLLATE 。 詳細については、「」、「」、「」、「」を参照してください _stricmp _wcsicmp _mbsicmp _stricmp_l _wcsicmp_l _mbsicmp_l

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString s1(_T("abc"));
CAtlString s2(_T("ABD"));
ASSERT(s1.CompareNoCase(s2) < 0); // Compare with a CAtlString.
ASSERT(s1.CompareNoCase(_T("ABE")) < 0); // Compare with LPTSTR string.   

CStringT::CStringT

オブジェクトを構築 CStringT します。

CStringT() throw() :
    CThisSimpleString(StringTraits::GetDefaultManager());

explicit CStringT(IAtlStringMgr* pStringMgr) throw() :
    CThisSimpleString( pStringMgr);

CStringT(const VARIANT& varSrc);

CStringT(const VARIANT& varSrc, IAtlStringMgr* pStringMgr);

CStringT(const CStringT& strSrc) :
    CThisSimpleString( strSrc);

operator CSimpleStringT<
                    BaseType,
                    !_CSTRING_IMPL_::_MFCDLLTraitsCheck<BaseType, StringTraits>
                    :: c_bIsMFCDLLTraits> &()

template <bool bMFCDLL>
CStringT(const CSimpleStringT<BaseType, bMFCDLL>& strSrc) :
    CThisSimpleString( strSrc);

template <class SystemString>
CStringT(SystemString^ pString) :
    CThisSimpleString( StringTraits::GetDefaultManager());

CStringT(const XCHAR* pszSrc) :
    CThisSimpleString( StringTraits::GetDefaultManager());

CSTRING_EXPLICIT CStringT(const YCHAR* pszSrc) :
    CThisSimpleString( StringTraits::GetDefaultManager());

CStringT(LPCSTR pszSrc, IAtlStringMgr* pStringMgr) :
    CThisSimpleString( pStringMgr);

CStringT(LPCWSTR pszSrc, IAtlStringMgr* pStringMgr) :
    CThisSimpleString( pStringMgr);

CSTRING_EXPLICIT CStringT(const unsigned char* pszSrc) :
    CThisSimpleString( StringTraits::GetDefaultManager());

/*CSTRING_EXPLICIT*/ CStringT(char* pszSrc) :
    CThisSimpleString( StringTraits::GetDefaultManager());

CSTRING_EXPLICIT CStringT(unsigned char* pszSrc) :
    CThisSimpleString( StringTraits::GetDefaultManager());

CSTRING_EXPLICIT CStringT(wchar_t* pszSrc) :
    CThisSimpleString( StringTraits::GetDefaultManager());

CStringT(const unsigned char* pszSrc, IAtlStringMgr* pStringMgr) :
    CThisSimpleString( pStringMgr);

CSTRING_EXPLICIT CStringT(char ch, int nLength = 1) :
    CThisSimpleString( StringTraits::GetDefaultManager());

CSTRING_EXPLICIT CStringT(wchar_t ch, int nLength = 1) :
    CThisSimpleString( StringTraits::GetDefaultManager());

CStringT(const XCHAR* pch, int nLength) :
    CThisSimpleString( pch, nLength, StringTraits::GetDefaultManager());

CStringT(const YCHAR* pch, int nLength) :
    CThisSimpleString( StringTraits::GetDefaultManager());

CStringT(const XCHAR* pch, int nLength, AtlStringMgr* pStringMgr) :
    CThisSimpleString( pch, nLength, pStringMgr);

CStringT(const YCHAR* pch, int nLength, IAtlStringMgr* pStringMgr) :
    CThisSimpleString( pStringMgr);

パラメーター

pch
長さ 、null 終端ではない nLength 文字の配列へのポインター。

nLength
内の文字数のカウント pch

ch
1 文字。

pszSrc
このオブジェクトにコピーされる null で終えた CStringT 文字列。

pStringMgr
オブジェクトのメモリ マネージャーへの CStringT ポインター。 および のメモリ管理 IAtlStringMgr の詳細については CStringT 、「CStringT を使用したメモリ管理」を参照してください

strSrc
このオブジェクト CStringT にコピーされる既存の CStringT オブジェクト。 と の詳細 CThisString については CThisSimpleString 、「解説」セクションを参照してください。

varSrc
このオブジェクトにコピーされるバリアント CStringT オブジェクト。

BaseType
文字列クラスの文字型。 以下のいずれかを指定できます。

char (ANSI 文字列の場合)。

wchar_t (Unicode 文字列の場合)。

TCHAR (ANSI と Unicode の両方の文字列の場合)。

bMFCDLL
プロジェクトが MFC DLL ( ) かどうかを指定する TRUE ブール値 ( FALSE )。

SystemString
は である必要 System::String があります。プロジェクトは でコンパイルする必要があります /clr

pString
オブジェクトの CStringT ハンドル。

Remarks

コンストラクターは入力データを新しい割り当て済みストレージにコピーするために、メモリ例外が発生する可能性があります。 これらのコンストラクターの一部は、変換関数として機能します。 これにより、たとえば オブジェクトが必要な LPTSTR に置 CStringT き換える可能性があります。

  • CStringT( LPCSTR lpsz ): CStringT ANSI 文字列から Unicode を構築します。 次の例に示すように、このコンストラクターを使用して文字列リソースを読み込む方法も可能です。

  • CStringT(``LPCWSTR lpsz : Unicode 文字列 CStringT から を構築します。

  • CStringT( const unsigned char* psz ): へのポインターから CStringT を構築できます unsigned char

注意

_CSTRING_DISABLE_NARROW_WIDE_CONVERSIONANSI 文字列と Unicode 文字列間の暗黙的な文字列変換をオフにするマクロを定義します。 マクロは、変換をサポートするコンパイル コンストラクターから除外されます。

パラメーター strSrc には、 または CStringT オブジェクトを指定 CThisSimpleString できます。 の CStringT 場合は、既定のインスタンス化 (、、または ) のいずれかを使用し、 CString CStringA には CStringW CThisSimpleString ポインターを使用 this します。 CThisSimpleStringは、 クラスのインスタンスを宣言 CSimpleStringT します。これは、 クラスよりも少ない組み込み機能を持つ小さな文字列 CStringT クラスです。

オーバーロード演算子は CSimpleStringT<>&() 、宣言から CStringT オブジェクトを構築 CSimpleStringT します。

注意

null 文字が埋め CStringT 込まれているインスタンスを作成することができますが、そのインスタンスに対して推奨されます。 null 文字が埋め込まれているオブジェクトでメソッドと演算子を呼び出した場合、意図しない CStringT 結果が生成される可能性があります。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString s1;                    // Empty string
CAtlString s2(_T("cat"));           // From a C string literal
CAtlString s3 = s2;               // Copy constructor
CAtlString s4(s2 + _T(" ") + s3);   // From a string expression

CAtlString s5(_T('x'));             // s5 = "x"
CAtlString s6(_T('x'), 6);          // s6 = "xxxxxx"

CAtlString s7((LPCSTR)ID_FILE_NEW); // s7 = "Create a new document"

VARIANT var;
V_VT(&var) = VT_BSTR;
V_BSTR(&var) = ::SysAllocString(L"Football is a fun sport.");
CAtlString s8(var); // s8 = "Football is a fun sport."

// The following statement does not call the assignment operator.
// The compiler considers the following statement equivalent to
// CAtlString city("Paris")
CAtlString city = _T("Paris");   

CStringT::~CStringT

オブジェクトを破棄 CStringT します。

~CStringT() throw();

Remarks

オブジェクトを破棄 CStringT します。

CStringT::Delete

指定したインデックスの文字で始まる文字列から文字または文字を削除します。

int Delete(int iIndex, int nCount = 1);

パラメーター

iIndex
削除する オブジェクト内の最初の文字の 0 CStringT から始るインデックス。

nCount
削除する文字数。

戻り値

変更された文字列の長さ。

Remarks

nCount 文字列より長い場合、文字列の残りの部分は削除されます。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString str(_T("Soccer is best, but hockey is quicker!"));
_tprintf_s(_T("Before: %s\n"), (LPCTSTR)str);

int n = str.Delete(6, 3);
_tprintf_s(_T("After: %s\n"), (LPCTSTR)str);
ASSERT(n == str.GetLength());
Before: Soccer is best,
    but hockey is quicker!
After: Soccer best,
    but hockey is quicker!

CStringT::Find

この文字列で、文字または部分文字列の最初の一致を検索します。

int Find(PCXSTR pszSub, int iStart=0) const throw();
int Find(XCHAR ch, int iStart=0) const throw();

パラメーター

pszSub
検索する部分文字列。

iStart
検索を開始する文字列内の文字のインデックス。最初から開始する場合は 0。

ch
検索する 1 文字。

戻り値

要求された部分文字列または文字に一致する、このオブジェクト内の最初の文字の 0 から始るインデックス。部分文字列または文字が見つからない場合は CStringT -1。

Remarks

関数は、単一文字 (実行時関数と同様) と文字列 (に似ています) の両方を受け入れるオーバーロード strchr されています strstr

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString s(_T("abcdef"));
ASSERT(s.Find(_T('c')) == 2);
ASSERT(s.Find(_T("de")) == 3);

CAtlString str(_T("The waves are still"));
int n = str.Find(_T('e'), 5);
ASSERT(n == 7);   

CStringT::FindOneOf

に含まれる任意の文字に一致する最初の文字をこの文字列で検索します pszCharSet

int FindOneOf(PCXSTR pszCharSet) const throw();

パラメーター

pszCharSet
照合する文字を含む文字列。

戻り値

この文字列内の同じ文字列内の最初の文字の 0 から始るインデックス。一致がない場合は pszCharSet -1。

Remarks

内の文字の最初の出現箇所を検索します pszCharSet

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString s(_T("abcdef"));
ASSERT(s.FindOneOf(_T("xd")) == 3); // 'd' is first match   

CStringT::Format

C スタイルの文字配列にデータを書式設定するのと同じ方法で、書式設定されたデータ CStringT sprintf_s を に書き込みます。

void __cdecl Format(UINT nFormatID, [, argument]...);
void __cdecl Format(PCXSTR pszFormat,  [, argument] ...);

パラメーター

nFormatID
書式制御文字列を含む文字列リソース識別子。

pszFormat
書式制御文字列。

argument
省略可能な引数。

Remarks

この関数は、 に一連の文字と値を書式設定して格納します CStringT 。 各省略可能な引数 (存在する場合) は、 または で識別される文字列リソースから、対応する書式指定に従って変換 pszFormat および出力されます nFormatID

文字列オブジェクト自体が へのパラメーターとして提供されている場合、呼び出しは失敗します Format 。 たとえば、次のコードでは予期しない結果が発生します。

CAtlString str = _T("Some Data");
str.Format(_T("%s%d"), str, 123);   
// Attention: str is also used in the parameter list.   

詳細については、「書式指定構文 : 関数」および printf 「関数」を wprintf 参照してください

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str;

str.Format(_T("Floating point: %.2f\n"), 12345.12345);
_tprintf_s(_T("%s"), (LPCTSTR) str);

str.Format(_T("Left-justified integer: %.6d\n"), 35);
_tprintf_s(_T("%s"), (LPCTSTR) str);

CStringT::FormatMessage

メッセージ文字列を書式設定します。

void __cdecl FormatMessage(UINT nFormatID, [, argument]...);
void __cdecl FormatMessage(PCXSTR pszFormat, [, argument]...);

パラメーター

nFormatID
書式設定されていないメッセージ テキストを含む文字列リソース識別子。

pszFormat
書式制御文字列をポイントします。 挿入がスキャンされ、書式設定されます。 書式指定文字列は、パラメーターを任意の順序で挿入できる点を除き、実行時関数 -style 書式指定文字列 printf に似ています。

argument
省略可能な引数。

Remarks

関数には、入力としてメッセージ定義が必要です。 メッセージ定義は、 によって識別される pszFormat 文字列リソースによって、または によって決定されます nFormatID 。 関数は、書式設定されたメッセージ テキストを オブジェクトにコピーし、必要に応じて埋め込まれた CStringT 挿入シーケンスを処理します。

注意

FormatMessage は、新しく書式設定された文字列にシステム メモリを割り当て試行します。 この試行が失敗すると、メモリ例外が自動的にスローされます。

各挿入には、 パラメーターまたは パラメーターの後に対応するパラメーターが pszFormat 必要 nFormatID です。 メッセージ テキスト内では、メッセージを動的に書式設定する複数のエスケープ シーケンスがサポートされています。 詳細については、Windows SDK の Windows FormatMessage 関数を参照してください。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString str;
int nAsked = 5;
int nAgree = 4;

str.FormatMessage(_T("%1!d! of %2!d! writers agree: Soccer is %3%!"), 
   nAgree, nAsked, _T("Best"));
ASSERT(str == _T("4 of 5 writers agree: Soccer is Best!"));   

CStringT::FormatMessageV

変数引数リストを使用してメッセージ文字列を書式設定します。

void FormatMessageV(PCXSTR pszFormat, va_list* pArgList);

パラメーター

pszFormat
書式制御文字列をポイントします。 挿入がスキャンされ、書式設定されます。 書式指定文字列は、 printf パラメーターが任意の順序で挿入されることを除いて、ランタイムの関数形式の書式指定文字列に似ています。

pArgList
引数のリストへのポインター。

Remarks

関数は、によって決定される、入力としてのメッセージ定義を必要とし pszFormat ます。 関数は、書式設定されたメッセージテキストと引数の変数リストをオブジェクトにコピーし CStringT 、要求された場合は埋め込み挿入シーケンスを処理します。

注意

FormatMessageV を呼び出します CStringT::FormatMessage 。これは、新しく書式設定された文字列にシステムメモリを割り当てようとします。 この試行が失敗した場合は、メモリ例外が自動的にスローされます。

詳細については、Windows SDK の Windows 関数を参照してください FormatMessage

CStringT::FormatV

可変個引数リストを使用してメッセージ文字列を書式設定します。

void FormatV(PCXSTR pszFormat, va_list args);

パラメーター

pszFormat
は、書式指定文字列を指します。 挿入がスキャンされ、それに応じて書式設定されます。 書式指定文字列は、 printf パラメーターが任意の順序で挿入されることを除いて、ランタイムの関数形式の書式指定文字列に似ています。

args
引数のリストへのポインター。

Remarks

CStringT vsprintf_s C スタイルの文字配列にデータを書式設定するのと同じ方法で、書式設定された文字列と引数の変数リストを文字列に書き込みます。

void WriteString(LPCTSTR pstrFormat, ...)
{
    CString str;

    // format and write the data you were given
    va_list args;
    va_start(args, pstrFormat);

    str.FormatV(pstrFormat, args);
    va_end(args);

    _tprintf_s(str);
    return;
}
// Call the above WriteString function.
WriteString(_T("%d error(s) found in %d line(s)"), 10, 1351);

CStringT::GetEnvironmentVariable

指定された環境変数の値に文字列を設定します。

BOOL GetEnvironmentVariable(PCXSTR pszVar);

パラメーター

pszVar
環境変数を指定する null で終わる文字列へのポインター。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

Remarks

呼び出し元プロセスの環境ブロックから、指定された変数の値を取得します。 値は、null で終わる文字列の形式で指定します。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString EnvStr;

EnvStr.GetEnvironmentVariable(_T("TEMP"));
_tprintf_s(_T("Current value of TEMP variable: %s\n"), EnvStr);

CStringT::Insert

文字列内の指定したインデックス位置に1つの文字または部分文字列を挿入します。

int Insert(int iIndex, PCXSTR psz);
int Insert(int iIndex, XCHAR ch);

パラメーター

iIndex
挿入が行われる前の文字のインデックス。

psz
挿入する部分文字列へのポインター。

ch
挿入する文字。

戻り値

変更された文字列の長さ。

Remarks

パラメーターは、 iIndex 文字または部分文字列用の領域を確保するために移動される最初の文字を識別します。 nIndex が0の場合は、文字列全体の前に挿入が行われます。 NIndex が文字列の長さよりも大きい場合、関数は、現在の文字列と、またはのいずれかによって提供された新しいマテリアルを連結 ch psz します。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString str(_T("SoccerBest"));
int n = str.Insert(6, _T("is "));
ASSERT(n == str.GetLength());
_tprintf_s(_T("1: %s\n"), (LPCTSTR) str);

n = str.Insert(6, _T(' '));
ASSERT(n == str.GetLength());
_tprintf_s(_T("2: %s\n"), (LPCTSTR) str);

n = str.Insert(55, _T('!'));
ASSERT(n == str.GetLength());
_tprintf_s(_T("3: %s\n"), (LPCTSTR) str);

CStringT::Left

このオブジェクトから左端の文字を抽出し、抽出した nCount CStringT 部分文字列のコピーを返します。

CStringT Left(int nCount) const;

パラメーター

nCount
このオブジェクトから抽出する文字数 CStringT

戻り値

CStringT 指定した文字範囲のコピーを格納しているオブジェクト。 返される CStringT オブジェクトは空でもかまいません。

Remarks

nCount 文字列の長さを超えた場合、文字列全体が抽出されます。 Left は、Basic Left 関数に類似します。

マルチバイト文字セット (MBCS) の場合、では nCount 各8ビットシーケンスが1つの文字として扱われるので、は nCount 2 で乗算されたマルチバイト文字の数を返します。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString s(_T("abcdef"));
ASSERT(s.Left(2) == _T("ab"));   

CStringT::LoadString

nID によって識別される Windows 文字列リソースを既存の CStringT オブジェクトに読み込みます。

BOOL LoadString(HINSTANCE hInstance, UINT nID, WORD wLanguageID);
BOOL LoadString(HINSTANCE hInstance, UINT nID);
BOOL LoadString(UINT nID);

パラメーター

hInstance
モジュールのインスタンスへのハンドル。

nID
Windows 文字列リソース ID。

wLanguageID
文字列リソースの言語。

戻り値

リソースの読み込みが成功した場合は0以外の場合は。それ以外の場合は0です。

Remarks

指定された nID hInstance 言語 () を使用して、指定されたモジュール () から文字列リソース () を読み込み wLanguage ます。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString s;
s.LoadString(IDS_APP_TITLE);   

CStringT::MakeLower

オブジェクトを CStringT 小文字の文字列に変換します。

CStringT& MakeLower();

戻り値

結果として得られる小文字の文字列。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString s(_T("ABC"));

ASSERT(s.MakeLower() == _T("abc"));   

CStringT::MakeReverse

オブジェクト内の文字の順序を反転させ CStringT ます。

CStringT& MakeReverse();

戻り値

結果の逆順の文字列。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString s(_T("abc"));

ASSERT(s.MakeReverse() == _T("cba"));   

CStringT::MakeUpper

オブジェクトを CStringT 大文字の文字列に変換します。

CStringT& MakeUpper();

戻り値

結果として得られる大文字の文字列。

解説

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString s(_T("abc"));

ASSERT(s.MakeUpper() == _T("ABC"));   

CStringT::Mid

nCount CStringT 位置 (0 から始まる) を開始位置として、このオブジェクトから長さの文字の部分文字列を抽出し iFirst ます。

CStringT Mid(int iFirst, int nCount) const;
CStringT Mid(int iFirst) const;

パラメーター

iFirst
抽出された CStringT 部分文字列に含める、このオブジェクト内の最初の文字の0から始まるインデックス。

nCount
このオブジェクトから抽出する文字数 CStringT 。 このパラメーターを指定しない場合は、文字列の残りの部分が抽出されます。

戻り値

CStringT 指定した文字範囲のコピーを格納しているオブジェクト。 返される CStringT オブジェクトは空でもかまいません。

Remarks

関数は、抽出された部分文字列のコピーを返します。 Mid は、基本的な Mid 関数に似ています (ただし、Basic のインデックスは1から始まる)。

マルチバイト文字セット (MBCS) の場合、は nCount 各8ビット文字を参照します。つまり、1つのマルチバイト文字の先頭バイトと末尾バイトは2文字としてカウントされます。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString s(_T("abcdef"));
ASSERT(s.Mid(2, 3) == _T("cde"));   

CStringT::OemToAnsi

このオブジェクトのすべての文字を CStringT OEM 文字セットから ANSI 文字セットに変換します。

void OemToAnsi();

Remarks

この関数 _UNICODE は、が定義されている場合は使用できません。

の例を参照してください CStringT::AnsiToOem

CStringT::operator =

文字列に新しい値を割り当てます。

CStringT& operator=(const CStringT& strSrc);

template<bool bMFCDLL>
CStringT& operator=(const CSimpleStringT<BaseType, bMFCDLL>& str);
CStringT& operator=(PCXSTR pszSrc);
CStringT& operator=(PCYSTR pszSrc);
CStringT& operator=(const unsigned char* pszSrc);
CStringT& operator=(XCHAR ch);
CStringT& operator=(YCHAR ch);
CStringT& operator=(const VARIANT& var);

パラメーター

strSrc
CStringT この文字列に代入する。

str
CThisSimpleString オブジェクトへの参照です。

bMFCDLL
プロジェクトが MFC DLL であるかどうかを指定するブール値です。

BaseType
文字列基本型。

var
この文字列に代入するバリアントオブジェクト。

ch
文字列に割り当てる ANSI 文字または Unicode 文字。

pszSrc
割り当てられている元の文字列へのポインター。

Remarks

代入演算子は、別の CStringT オブジェクト、文字ポインター、または1つの文字を受け入れます。 新しいストレージを割り当てることができるため、この演算子を使用するたびにメモリ例外が発生する可能性があります。

の詳細については CThisSimpleString 、「」の「解説」を参照してください CStringT::CStringT

注意

埋め込まれた null 文字を含むインスタンスを作成することもでき CStringT ますが、それに対しては使用しないことをお勧めします。 Null 文字が埋め込まれているオブジェクトに対してメソッドと演算子を呼び出すと、 CStringT 意図しない結果が生じる可能性があります。

CStringT::operator +

2つの文字列、または1つの文字と文字列を連結します。

friend CStringT operator+(const CStringT& str1, const CStringT& str2);
friend CStringT operator+(const CStringT& str1, PCXSTR psz2);
friend CStringT operator+(PCXSTR psz1, const CStringT& str2,);
friend CStringT operator+(char ch1, const CStringT& str2,);
friend CStringT operator+(const CStringT& str1, char ch2);
friend CStringT operator+(const CStringT& str1, wchar_t ch2);
friend CStringT operator+(wchar_t ch1, const CStringT& str2,);

パラメーター

ch1
文字列と連結する ANSI または Unicode 文字。

ch2
文字列と連結する ANSI または Unicode 文字。

str1
CStringT 文字列または文字と連結する。

str2
CStringT 文字列または文字と連結する。

psz1
文字列または文字と連結する、null で終わる文字列へのポインター。

psz2
文字列または文字と連結する文字列へのポインター。

Remarks

関数には、7つのオーバーロード形式があり CStringT::operator+ ます。 最初のバージョンでは、2つの既存のオブジェクトを連結 CStringT します。 次の2つは、 CStringT オブジェクトと null で終わる文字列を連結したものです。 次の2つは、オブジェクトと ANSI 文字を連結したもの CStringT です。 最後の2つは、オブジェクトと Unicode 文字を連結したもの CStringT です。

注意

埋め込まれた null 文字を含むインスタンスを作成することもでき CStringT ますが、それに対しては使用しないことをお勧めします。 Null 文字が埋め込まれているオブジェクトに対してメソッドと演算子を呼び出すと、 CStringT 意図しない結果が生じる可能性があります。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("dog ")), s2(_T(" awake")), s3;  // Empty CAtlString objects

s1= _T("The ") + s1;
s3= s1 + _T('i');
s3= s3 + _T('s');
s3= s3 + s2;
ASSERT(s3 == _T("The dog is awake"));   

CStringT::operator +=

文字列の末尾に文字を連結します。

CStringT& operator+=(const CThisSimpleString& str);

template<bool bMFCDLL>
CStringT& operator+=(const const CSimpleStringT<BaseType, bMFCDLL>& str);

template<int t_nSize>
CStringT& operator+=(const CStaticString<XCHAR, t_nSize>& strSrc);
CStringT& operator+=(PCXSTR pszSrc);
CStringT& operator+=(PCYSTR pszSrc);
CStringT& operator+=(char ch);
CStringT& operator+=(unsigned char ch);
CStringT& operator+=(wchar_t ch);
CStringT& operator+=(const VARIANT& var);

パラメーター

str
CThisSimpleString オブジェクトへの参照です。

bMFCDLL
プロジェクトが MFC DLL であるかどうかを指定するブール値です。

BaseType
文字列基本型。

var
この文字列に連結するバリアントオブジェクト。

ch
文字列と連結する ANSI または Unicode 文字。

pszSrc
連結されている元の文字列へのポインター。

strSrc
CStringT この文字列に連結する。

Remarks

演算子は、別の CStringT オブジェクト、文字ポインター、または1つの文字を受け入れます。 この連結演算子を使用すると、このオブジェクトに追加された文字に対して新しいストレージを割り当てることができるため、メモリ例外が発生する可能性があり CStringT ます。

の詳細については CThisSimpleString 、「」の「解説」を参照してください CStringT::CStringT

注意

埋め込まれた null 文字を含むインスタンスを作成することもでき CStringT ますが、それに対しては使用しないことをお勧めします。 Null 文字が埋め込まれているオブジェクトに対してメソッドと演算子を呼び出すと、 CStringT 意図しない結果が生じる可能性があります。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString s(_T("abc"));
ASSERT((s += _T("def")) == _T("abcdef"));   

CStringT::operator ==

2つの文字列が論理的に等しいかどうかを判断します。

friend bool operator==(const CStringT& str1, const CStringT& str2) throw();
friend bool operator==(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator==(const CStringT& str1, PCYSTR psz2) throw();
friend bool operator==(const CStringT& str1, XCHAR ch2) throw();
friend bool operator==(PCXSTR psz1, const CStringT& str2) throw();
friend bool operator==(PCYSTR psz1, const CStringT& str2,) throw();
friend bool operator==(XCHAR ch1, const CStringT& str2,) throw();

パラメーター

ch1
比較のための ANSI 文字または Unicode 文字。

ch2
比較のための ANSI 文字または Unicode 文字。

str1
CStringT 比較対象の。

str2
CStringT 比較対象の。

psz1
Null で終わる比較対象の文字列へのポインター。

psz2
Null で終わる比較対象の文字列へのポインター。

Remarks

左側の文字列または文字が右側の文字列または文字と等しいかどうかをテストし、それに TRUE 応じて、またはを返し FALSE ます。

// typedef CStringT< TCHAR, StrTraitATL< TCHAR > > CAtlString;
CAtlString s1(_T("dog")), s2(_T("f")), s3(_T("dog"));

ASSERT(s1 == _T("dog"));
ASSERT(s2 == _T('f'));
ASSERT(s1 == s3);   

CStringT::operator !=

2つの文字列が論理的に等しくないかどうかを判断します。

friend bool operator!=(const CStringT& str1, const CStringT& str2) throw();
friend bool operator!=(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator!=(const CStringT& str1, PCYSTR psz2) throw();
friend bool operator!=(const CStringT& str1, XCHAR ch2) throw();
friend bool operator!=(PCXSTR psz1, const CStringT& str2) throw();
friend bool operator!=(PCYSTR psz1, const CStringT& str2,) throw();
friend bool operator!=(XCHAR ch1, const CStringT& str2,) throw();

パラメーター

ch1
文字列と連結する ANSI または Unicode 文字。

ch2
文字列と連結する ANSI または Unicode 文字。

str1
CStringT 比較対象の。

str2
CStringT 比較対象の。

psz1
Null で終わる比較対象の文字列へのポインター。

psz2
Null で終わる比較対象の文字列へのポインター。

Remarks

左側の文字列または文字が右側の文字列または文字と等しくないかどうかをテストします。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("cat")), s2(_T("f")), s3(_T("horse"));

ASSERT(s1 != _T("dog"));
ASSERT(s2 != _T('t'));
ASSERT(s1 != s2);   

CStringT::operator <

演算子の左辺の文字列が右辺の文字列より小さいかどうかを判断します。

friend bool operator<(const CStringT& str1, const CStringT& str2) throw();
friend bool operator<(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator<(PCXSTR psz1, const CStringT& str2) throw();

パラメーター

str1
CStringT 比較対象の。

str2
CStringT 比較対象の。

psz1
Null で終わる比較対象の文字列へのポインター。

psz2
Null で終わる比較対象の文字列へのポインター。

Remarks

文字列間の辞書式比較 (文字単位)。

  • 2 つの対応する文字が等しくない場合、比較の結果は文字列間の比較の結果として取得されます。

  • 不等が見つからなくても、1 つの文字列に他より多くの文字がある場合、短い文字列は長い文字列より小さいと見なされます。

  • 不等が見つからず、各文字列の文字数が同じである場合、文字列が等しくなります。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("cat")), s2(_T("cats")), s3(_T("dogs"));

ASSERT(s1 < _T("dog"));
ASSERT(s1 < _T("cats"));
ASSERT(s2 < _T("cats and dogs"));
ASSERT(s2 < s3);   

CStringT::operator >

演算子の左辺の文字列が右側の文字列より大きいかどうかを判断します。

friend bool operator>(const CStringT& str1, const CStringT& str2) throw();
friend bool operator>(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator>(PCXSTR psz1, const CStringT& str2) throw();

パラメーター

str1
CStringT 比較対象の。

str2
CStringT 比較対象の。

psz1
Null で終わる比較対象の文字列へのポインター。

psz2
Null で終わる比較対象の文字列へのポインター。

Remarks

文字列間の辞書式比較 (文字単位)。

  • 2 つの対応する文字が等しくない場合、比較の結果は文字列間の比較の結果として取得されます。

  • 不等が見つからなくても、1 つの文字列に他より多くの文字がある場合、短い文字列は長い文字列より小さいと見なされます。

  • 不等が見つからず、各文字列の文字数が同じである場合、文字列が等しくなります。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("cat")), s2(_T("cats")), s3(_T("dogs"));
ASSERT(_T("dog") > s1);
ASSERT(_T("cats") > s1);
ASSERT(_T("cats and dogs") > s2);
ASSERT(s3 > s2);   

CStringT::operator <=

演算子の左側の文字列が右側の文字列以下であるかどうかを判断します。

friend bool operator<=(const CStringT& str1, const CStringT& str2) throw();
friend bool operator<=(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator<=(PCXSTR psz1, const CStringT& str2) throw();

パラメーター

str1
CStringT 比較対象の。

str2
CStringT 比較対象の。

psz1
Null で終わる比較対象の文字列へのポインター。

psz2
Null で終わる比較対象の文字列へのポインター。

Remarks

文字列間の辞書式比較 (文字単位)。

  • 2 つの対応する文字が等しくない場合、比較の結果は文字列間の比較の結果として取得されます。

  • 不等が見つからなくても、1 つの文字列に他より多くの文字がある場合、短い文字列は長い文字列より小さいと見なされます。

  • 不等が見つからず、各文字列の文字数が同じである場合、文字列が等しくなります。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("cat")), s2(_T("cats")), s3(_T("dogs"));

ASSERT(s1 <= _T("dog"));
ASSERT(s1 <= _T("cat"));
ASSERT(s3 <= _T("dogs and cats"));
ASSERT(s2 <= s3);   

CStringT::operator >=

演算子の左辺の文字列が、右側の文字列以上かどうかを判断します。

friend bool operator>=(const CStringT& str1, const CStringT& str2) throw();
friend bool operator>=(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator>=(PCXSTR psz1, const CStringT& str2) throw();

パラメーター

str1
CStringT 比較対象の。

str2
CStringT 比較対象の。

psz1
比較対象の文字列へのポインター。

psz2
比較対象の文字列へのポインター。

Remarks

文字列間の辞書式比較 (文字単位)。

  • 2 つの対応する文字が等しくない場合、比較の結果は文字列間の比較の結果として取得されます。

  • 不等が見つからなくても、1 つの文字列に他より多くの文字がある場合、短い文字列は長い文字列より小さいと見なされます。

  • 不等が見つからず、各文字列の文字数が同じである場合、文字列が等しくなります。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("cat")), s2(_T("cats")), s3(_T("dogs"));

ASSERT(_T("dog") >= s1);
ASSERT(_T("cats and dogs") >= s2);
ASSERT(s3 >= s2);   

CStringT::Remove

指定した文字のすべてのインスタンスを文字列から削除します。

int Remove(XCHAR chRemove);

パラメーター

chRemove
文字列から削除する文字。

戻り値

文字列から削除された文字の数。 文字列が変更されない場合は0。

Remarks

文字の比較では大文字と小文字が区別されます。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString str(_T("This is a test."));
int n = str.Remove(_T('t'));
ASSERT(n == 2);
ASSERT(str == _T("This is a es."));   

CStringT::Replace

には、2つのバージョンがあり Replace ます。 最初のバージョンでは、別の部分文字列を使用して部分文字列の1つ以上のコピーを置き換えます。 両方の部分文字列が null で終了します。 2番目のバージョンでは、別の文字を使用して文字の1つ以上のコピーを置き換えます。 どちらのバージョンも、に格納されている文字データに対して動作 CStringT します。

int Replace(PCXSTR pszOld, PCXSTR pszNew);
int Replace(XCHAR chOld, XCHAR chNew);

パラメーター

pszOld
によって置換される、null で終わる文字列へのポインター pszNew

pszNew
を置き換える null で終わる文字列へのポインター pszOld

chOld
に置き換えられる文字 chNew

chNew
を置き換える文字 chOld

戻り値

文字または部分文字列の置換されたインスタンスの数を返します。文字列が変更されていない場合は0を返します。

Remarks

Replace では文字列の長さを変更でき pszNew pszOld ます。同じ長さである必要はなく、古い部分文字列の複数のコピーを新しいものに変更できるためです。 関数では、大文字と小文字が区別されます。

インスタンスの例として、、、など CStringTCString CStringA CStringW あります。

の場合 CStringA 、は Replace ANSI またはマルチバイト (MBCS) の文字を使用します。 の場合 CStringW 、は Replace ワイド文字を使用します。

では CString 、次の表の定数が定義されているかどうかに基づいて、コンパイル時に文字データ型が選択されます。

定義済み定数 Character データ型
_UNICODE ワイド文字
_MBCS 複数バイト文字
どちらもオフ 1バイト文字
両方 未定義。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString strBang(_T("Everybody likes epee fencing"));
int n = strBang.Replace(_T("epee"), _T("foil"));
ASSERT(n == 1);   

CStringT::ReverseFind

この CStringT オブジェクトで、文字の最後の一致を検索します。

int ReverseFind(XCHAR ch) const throw();

パラメーター

ch
検索対象の文字。

戻り値

要求された文字と一致するこのオブジェクトの最後の文字の0から始まるインデックス番号 CStringT 。文字が見つからない場合は-1。

Remarks

関数は、ランタイム関数に似てい strrchr ます。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString s(_T("abcabc"));
ASSERT(s.ReverseFind(_T('b')) == 4);   

CStringT::Right

このオブジェクトから最後 (つまり右端) の文字を抽出し、抽出された nCount CStringT 部分文字列のコピーを返します。

CStringT Right(int nCount) const;

パラメーター

nCount
このオブジェクトから抽出する文字数 CStringT

戻り値

CStringT 指定した文字範囲のコピーを格納しているオブジェクト。 返される CStringT オブジェクトは空にすることができます。

Remarks

nCount 文字列の長さを超えた場合、文字列全体が抽出されます。 Right は基本的な関数に似てい Right ます (ただし、basic のインデックスは0から始まります)。

マルチバイト文字セット ( MBCS ) の場合、は nCount 各8ビット文字を参照します。つまり、1つのマルチバイト文字の先頭バイトと末尾バイトは2文字としてカウントされます。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString s(_T("abcdef"));
ASSERT(s.Right(2) == _T("ef"));   

CStringT::SetSysString

によって示されるを再割り当て BSTR pbstr し、その文字を含むオブジェクトの内容を CStringT そのオブジェクトにコピーし NULL ます。

BSTR SetSysString(BSTR* pbstr) const;

パラメーター

pbstr
文字列へのポインター。

戻り値

新しい文字列。

Remarks

オブジェクトの内容によっては、 CStringT BSTR によって参照されるの値が変更される pbstr ことがあります。 メモリが不足している場合、関数はをスローし CMemoryException ます。

通常、この関数は、オートメーションで参照によって渡される文字列の値を変更するために使用されます。

BSTR bstr = ::SysAllocString(L"Golf is fun!");

// create a CAtlString and change the OLE
// string to the contents of the BSTR
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString str(_T("Soccer is best!"));
BSTR bstr2 = str.SetSysString(&bstr);

// Now, both bstr and bstr2 reference a single instance of
// the "Soccer" string. The "Golf" string has been freed.
ASSERT(bstr2 == bstr);   

CStringT::SpanExcluding

文字列から、で識別される文字のセットに含まれていない文字を抽出し pszCharSet ます。

CStringT SpanExcluding(PCXSTR pszCharSet) const;

パラメーター

pszCharSet
文字のセットとして解釈される文字列。

戻り値

内に存在しない文字列の文字を格納する部分文字列。文字列内の最初の文字から始まり、にある文字列内の最初の文字で pszCharSet 終わり pszCharSet ます (つまり、文字列の最初の文字から始まり、見つかった文字列の最初の文字を除く最大の文字 pszCharSet )。 文字列内に文字が見つからない場合は、文字列全体が返され pszCharSet ます。

Remarks

SpanExcluding から文字が最初に出現する位置の前にあるすべての文字を抽出して返し pszCharSet ます (つまり、からの文字 pszCharSet と、文字列内のその後のすべての文字は返されません)。 pszCharSet 文字列内に文字が見つからない場合、は SpanExcluding 文字列全体を返します。

// The string can be delimited by a semicolon(;),
//  a comma(,), a period(.), a dash(-),
// or an apostrophe(').
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString src(_T("World Cup '98"));

_tprintf_s(_T("%s"),src.SpanExcluding(_T(";,.-'")));

CStringT::SpanIncluding

文字列から、で識別される文字のセットに含まれる文字を抽出し pszCharSet ます。

CStringT SpanIncluding(PCXSTR pszCharSet) const;

パラメーター

pszCharSet
文字のセットとして解釈される文字列。

戻り値

内の文字列内の文字を格納している部分文字列。文字列内の pszCharSet 最初の文字から始まり、に含まれていない文字列に文字が見つかったときに終了し pszCharSet ます。 SpanIncluding 文字列の最初の文字が指定されたセット内にない場合は、空の部分文字列を返します。

Remarks

文字列の最初の文字が文字セットに含まれていない場合、は SpanIncluding 空の文字列を返します。 それ以外の場合は、セット内の連続する文字のシーケンスを返します。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString str(_T("cabbage"));
CAtlString res = str.SpanIncluding(_T("abc"));
ASSERT(res == _T("cabba"));
res = str.SpanIncluding(_T("xyz"));
ASSERT(res.IsEmpty());   

CStringT::Tokenize

対象の文字列内の次のトークンを検索します。

CStringT Tokenize(PCXSTR pszTokens, int& iStart) const;

パラメーター

pszTokens
トークン区切り記号を格納している文字列。 これらの区切り記号の順序は重要ではありません。

iStart
検索を開始する位置を示す0から始まるインデックス。

戻り値

CStringT 現在のトークン値を格納しているオブジェクト。

Remarks

関数は、 Tokenize ターゲット文字列内の次のトークンを検索します。 の文字セットは、 pszTokens 検索するトークンの有効な区切り記号を指定します。 Tokenize関数が呼び出されるたびに、は iStart 先頭の区切り記号をスキップし、 CStringT 現在のトークンを含むオブジェクトを返します。これは、次の区切り文字までの文字の文字列です。 の値は、 iStart 末尾の区切り文字の後の位置に更新されます。文字列の末尾に到達した場合は-1 になります。 を Tokenize 使用して、 iStart 次のトークンが読み込まれる文字列内の位置を追跡するために、を使用して、ターゲット文字列の残りの部分よりも多くのトークンを分割できます。 トークンがこれ以上ない場合、関数は空の文字列を返し、 iStart -1 に設定されます。

、、、、、の strtok_s よう _strtok_s_l wcstok_s _wcstok_s_l _mbstok_s _mbstok_s_lCRT トークン化関数とは異なり、 Tokenize ターゲット文字列は変更されません。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str(_T("%First Second#Third"));
CAtlString resToken;
int curPos = 0;

resToken= str.Tokenize(_T("% #"),curPos);
while (resToken != _T(""))
{
   _tprintf_s(_T("Resulting token: %s\n"), resToken);
   resToken = str.Tokenize(_T("% #"), curPos);
};   

この例の出力は次のとおりです。

Resulting Token: First
Resulting Token: Second
Resulting Token: Third

CStringT::Trim

文字列から先頭と末尾の文字をトリミングします。

CStringT& Trim(XCHAR chTarget);
CStringT& Trim(PCXSTR pszTargets);
CStringT& Trim();

パラメーター

chTarget
トリミングされる対象の文字。

pszTargets
トリミングされる対象の文字を格納している文字列へのポインター。 内の文字の先頭および末尾の出現箇所 pszTargets はすべて、オブジェクトから削除され CStringT ます。

戻り値

トリミングされた文字列を返します。

Remarks

次のいずれかの先頭および末尾の出現箇所をすべて削除します。

  • で指定された文字 chTarget

  • で指定された文字列内のすべての文字 pszTargets

  • 前後.

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString str;
str = _T("******Soccer is best!?!?!?!?!");

_tprintf_s(_T("Before: \"%s\"\n"), (LPCTSTR)str);
_tprintf_s(_T("After : \"%s\"\n"), (LPCTSTR)str.Trim(_T("?!*")));

// Output:
// --------------------------
// Before: ******Soccer is best!?!?!?!?!
// After: Soccer is best

この例の出力は次のとおりです。

Before: "******Soccer is best, but liquor is quicker!!!!!"
After : "Soccer is best, but liquor is quicker"

CStringT::TrimLeft

文字列から先頭の文字をトリミングします。

CStringT& TrimLeft(XCHAR chTarget);
CStringT& TrimLeft(PCXSTR pszTargets);
CStringT& TrimLeft();

パラメーター

chTarget
トリミングされる対象の文字。

pszTargets
トリミングされる対象の文字を格納している文字列へのポインター。 で先頭に出現する文字 pszTargets はすべて、オブジェクトから削除され CStringT ます。

戻り値

結果のトリミングされた文字列。

Remarks

次のいずれかの先頭および末尾の出現箇所をすべて削除します。

  • で指定された文字 chTarget

  • で指定された文字列内のすべての文字 pszTargets

  • 前後.

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString str;
str = _T("\t\t   ****Soccer is best!");

_tprintf_s(_T("Before: \"%s\"\n"), (LPCTSTR)str);
_tprintf_s(_T("After: \"%s\"\n"), (LPCTSTR)str.TrimLeft(_T("\t *")));

// Output:
// --------------------------
// Before:     ****Soccer is best!
// After: Soccer is best!

CStringT::TrimRight

文字列の末尾の文字をトリミングします。

CStringT& TrimRight(XCHAR chTarget);
CStringT& TrimRight(PCXSTR pszTargets);
CStringT& TrimRight();

パラメーター

chTarget
トリミングされる対象の文字。

pszTargets
トリミングされる対象の文字を格納している文字列へのポインター。 内のすべての文字の末尾の出現箇所 pszTargets は、オブジェクトから削除され CStringT ます。

戻り値

CStringT トリミングされた文字列を含むオブジェクトを返します。

Remarks

次のいずれかの後続の出現箇所を削除します。

  • で指定された文字 chTarget

  • で指定された文字列内のすべての文字 pszTargets

  • 前後.

バージョンは、 CStringT& TrimRight(XCHAR chTarget) 1 つの文字パラメーターを受け取り、文字列データの末尾からその文字のすべてのコピーを削除し CStringT ます。 文字列の末尾から開始し、前方に向かって機能します。 別の文字が検出されたとき、またはが CStringT 文字データを使い果たしたときに停止します。

バージョンでは、 CStringT& TrimRight(PCXSTR pszTargets) 検索するすべての異なる文字を含む、null で終わる文字列を受け入れます。 オブジェクト内のこれらの文字のコピーをすべて削除 CStringT します。 文字列の末尾から開始し、前方に向かって機能します。 対象の文字列に含まれていない文字が見つかった場合、またはが文字データを使い果たした場合に停止し CStringT ます。 ターゲット文字列全体をの末尾の部分文字列と一致させようとしません CStringT

バージョンでは CStringT& TrimRight() パラメーターは必要ありません。 文字列の末尾から空白文字をすべてトリミング CStringT します。 空白文字は、改行、スペース、またはタブにすることができます。

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString str;
str = _T("Soccer is best!?!?!?!?!");

_tprintf_s(_T("Before: \"%s\"\n"), (LPCTSTR)str);
_tprintf_s(_T("After : \"%s\"\n"), (LPCTSTR)str.TrimRight(_T("?!")));

// Output:
// --------------------------
// Before: Soccer is best!?!?!?!?!
// After: Soccer is best

関連項目

階層図
ATL/MFC 共有クラス
CSimpleStringT 講義