CStringT Klasa

Ta klasa reprezentuje CStringT obiekt.

Składnia

template<typename BaseType, class StringTraits>
class CStringT :
    public CSimpleStringT<BaseType,
        _CSTRING_IMPL_::_MFCDLLTraitsCheck<BaseType, StringTraits>::c_bIsMFCDLLTraits>

Parametry

BaseType
Typ znaku klasy ciągów. Może być jednym z następujących elementów:

  • char (w przypadku ciągów znaków ANSI).

  • wchar_t (w przypadku ciągów znaków Unicode).

  • TCHAR (zarówno dla ciągów znaków ANSI, jak i Unicode).

StringTraits
Określa, czy klasa ciągów wymaga obsługi biblioteki C Run-Time (CRT) i lokalizacji zasobów ciągów. Może być jednym z następujących elementów:

  • StrTraitATL<wchar_t | char | TCHAR, ChTraitsCRT<wchar_t | char | TCHAR>>

    Klasa wymaga obsługi CRT i wyszukuje ciągi zasobów w module określonym przez m_hInstResource (element członkowski klasy modułu aplikacji).

  • StrTraitATL<wchar_t | char | TCHAR, ChTraitsOS<wchar_t | char |TCHAR>>

    Klasa nie wymaga obsługi CRT i wyszukuje ciągi zasobów w module określonym przez m_hInstResource (element członkowski klasy modułu aplikacji).

  • StrTraitMFC<wchar_t | char | TCHAR, ChTraitsCRT<wchar_t | char | TCHAR>>

    Klasa wymaga obsługi CRT i wyszukuje ciągi zasobów przy użyciu standardowego algorytmu wyszukiwania MFC.

  • StrTraitMFC<wchar_t | char | TCHAR, ChTraitsOS<wchar_t | char | TCHAR>>

    Klasa nie wymaga obsługi CRT i wyszukuje ciągi zasobów przy użyciu standardowego algorytmu wyszukiwania MFC.

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
CStringT::CStringT CStringT Tworzy obiekt na różne sposoby.
CStringT::~CStringT CStringT Niszczy obiekt.

Metody publiczne

Nazwa/nazwisko opis
CStringT::AllocSysString Przydziela element BSTR z CStringT danych.
CStringT::AnsiToOem Wykonuje konwersję w miejscu z zestawu znaków ANSI ustawionych na zestaw znaków OEM.
CStringT::AppendFormat Dołącza sformatowane dane do istniejącego CStringT obiektu.
CStringT::Collate Porównuje dwa ciągi (uwzględniana wielkość liter używa informacji specyficznych dla ustawień regionalnych).
CStringT::CollateNoCase Porównuje dwa ciągi (bez uwzględniania wielkości liter, używa informacji specyficznych dla ustawień regionalnych).
CStringT::Compare Porównuje dwa ciągi (z uwzględnieniem wielkości liter).
CStringT::CompareNoCase Porównuje dwa ciągi (bez uwzględniania wielkości liter).
CStringT::Delete Usuwa znak lub znaki z ciągu.
CStringT::Find Znajduje znak lub podciąg wewnątrz większego ciągu.
CStringT::FindOneOf Znajduje pierwszy pasujący znak z zestawu.
CStringT::Format Formatuje ciąg w następujący sposób sprintf .
CStringT::FormatMessage Formatuje ciąg komunikatu.
CStringT::FormatMessageV Formatuje ciąg komunikatu przy użyciu listy argumentów zmiennej.
CStringT::FormatV Formatuje ciąg przy użyciu listy zmiennych argumentów.
CStringT::GetEnvironmentVariable Ustawia ciąg na wartość określonej zmiennej środowiskowej.
CStringT::Insert Wstawia pojedynczy znak lub podciąg w danym indeksie w ciągu.
CStringT::Left Wyodrębnia lewą część ciągu.
CStringT::LoadString Ładuje istniejący CStringT obiekt z zasobu systemu Windows.
CStringT::MakeLower Konwertuje wszystkie znaki w tym ciągu na małe litery.
CStringT::MakeReverse Odwraca ciąg.
CStringT::MakeUpper Konwertuje wszystkie znaki w tym ciągu na wielkie litery.
CStringT::Mid Wyodrębnia środkową część ciągu.
CStringT::OemToAnsi Wykonuje konwersję w miejscu z zestawu znaków OEM na zestaw znaków ANSI.
CStringT::Remove Usuwa wskazane znaki z ciągu.
CStringT::Replace Zamienia wskazane znaki na inne znaki.
CStringT::ReverseFind Znajduje znak wewnątrz większego ciągu; rozpoczyna się od końca.
CStringT::Right Wyodrębnia prawą część ciągu.
CStringT::SetSysString Ustawia istniejący BSTR obiekt z danymi z CStringT obiektu.
CStringT::SpanExcluding Wyodrębnia znaki z ciągu, zaczynając od pierwszego znaku, które nie są w zestawie znaków identyfikowanych przez pszCharSet.
CStringT::SpanIncluding Wyodrębnia podciąg zawierający tylko znaki w zestawie.
CStringT::Tokenize Wyodrębnia określone tokeny w ciągu docelowym.
CStringT::Trim Przycina wszystkie znaki wiodące i końcowe odstępy z ciągu.
CStringT::TrimLeft Przycina wiodące znaki odstępów z ciągu.
CStringT::TrimRight Przycina końcowe znaki odstępu z ciągu.

Operatory

Nazwa/nazwisko opis
CStringT::operator = Przypisuje nową wartość do CStringT obiektu.
CStringT::operator + Łączy dwa ciągi lub znak i ciąg.
CStringT::operator += Łączy nowy ciąg na końcu istniejącego ciągu.
CStringT::operator == Określa, czy dwa ciągi są logicznie równe.
CStringT::operator != Określa, czy dwa ciągi nie są logicznie równe.
CStringT::operator < Określa, czy ciąg po lewej stronie operatora jest mniejszy niż ciąg po prawej stronie.
CStringT::operator > Określa, czy ciąg po lewej stronie operatora jest większy niż ciąg po prawej stronie.
CStringT::operator <= Określa, czy ciąg po lewej stronie operatora jest mniejszy lub równy ciągowi po prawej stronie.
CStringT::operator >= Określa, czy ciąg po lewej stronie operatora jest większy lub równy ciągowi po prawej stronie.

Uwagi

CStringT dziedziczy z CSimpleStringT klasy. Zaawansowane funkcje, takie jak manipulowanie znakami, porządkowanie i wyszukiwanie, są implementowane przez CStringTprogram .

Uwaga

CStringT obiekty mogą zgłaszać wyjątki. Dzieje się tak, gdy CStringT z jakiegokolwiek powodu obiekt zabraknie pamięci.

Obiekt CStringT składa się ze zmiennej długości sekwencji znaków. CStringT Udostępnia funkcje i operatory używające składni podobnej do podstawowej. Łączenie i operatory porównania, wraz z uproszczonym zarządzaniem pamięcią, ułatwiają CStringT korzystanie z obiektów niż zwykłe tablice znaków.

Uwaga

Chociaż istnieje możliwość utworzenia CStringT wystąpień zawierających osadzone znaki null, zalecamy jej użycie. Wywoływanie metod i operatorów w CStringT obiektach zawierających osadzone znaki null może generować niezamierzone wyniki.

Używając różnych kombinacji parametrów iStringTraits, CStringT obiekty mogą znajdować się w następujących typachBaseType, które zostały wstępnie zdefiniowane przez biblioteki ATL.

Jeśli używasz w aplikacji ATL:

CString, CStringAi CStringW są eksportowane z biblioteki MFC DLL (MFC90.DLL), nigdy nie pochodzą z bibliotek DLL użytkownika. Ma to na celu uniemożliwienie CStringT wielokrotnego definiowania.

Uwaga

Jeśli kod zawiera obejście błędów konsolidatora opisanych w artykule Eksportowanie klas ciągów przy użyciu języka CStringT, należy usunąć ten kod. Nie jest już potrzebny.

Następujące typy ciągów są dostępne w aplikacjach opartych na MFC:

Typ CStringT Deklaracji
CStringA Ciąg typu znaków ANSI z obsługą CRT.
CStringW Ciąg typu znaków Unicode z obsługą CRT.
CString Zarówno typy znaków ANSI, jak i Unicode z obsługą języka CRT.

Następujące typy ciągów są dostępne w projektach, w których ATL_CSTRING_NO_CRT zdefiniowano:

Typ CStringT Deklaracji
CAtlStringA Ciąg typu znaków ANSI bez obsługi CRT.
CAtlStringW Ciąg typu znaków Unicode bez obsługi CRT.
CAtlString Zarówno typy znaków ANSI, jak i Unicode bez obsługi języka CRT.

Następujące typy ciągów są dostępne w projektach, w których ATL_CSTRING_NO_CRT nie zdefiniowano:

Typ CStringT Deklaracji
CAtlStringA Ciąg typu znaków ANSI z obsługą CRT.
CAtlStringW Ciąg typu znaków Unicode z obsługą CRT.
CAtlString Zarówno typy znaków ANSI, jak i Unicode z obsługą języka CRT.

CString obiekty mają również następujące cechy:

  • CStringT obiekty mogą rosnąć z powodu operacji łączenia.

  • CStringT obiekty są zgodne z semantykami wartości. Obiekt można CStringT traktować jako rzeczywisty ciąg, a nie wskaźnik do ciągu.

  • Można swobodnie zastępować CStringT obiekty argumentów PCXSTR funkcji.

  • Niestandardowe zarządzanie pamięcią dla buforów ciągów. Aby uzyskać więcej informacji, zobacz Zarządzanie pamięcią i CStringT.

Wstępnie zdefiniowane typy CStringT

Ponieważ CStringT używa argumentu szablonu do zdefiniowania typu znaku ( wchar_t lub char) obsługiwanego, typy parametrów metody mogą być czasami skomplikowane. Aby uprościć ten problem, zdefiniowany jest zestaw wstępnie zdefiniowanych typów i używany w całej CStringT klasie. W poniższej tabeli wymieniono różne typy:

Nazwa/nazwisko opis
XCHAR Pojedynczy znak ( wchar_t lub char) o tym samym typie znaków co CStringT obiekt.
YCHAR Pojedynczy znak ( wchar_t lub char) z przeciwnym typem CStringT znaku jako obiekt.
PXSTR Wskaźnik do ciągu znaków ( wchar_t lub char) o tym samym typie znaku co CStringT obiekt.
PYSTR Wskaźnik do ciągu znaku (lub wchar_tchar) z przeciwnym typem znaku jako CStringT obiekt.
PCXSTR Wskaźnik do const ciągu znaków ( wchar_t lub char) o tym samym typie znaku co CStringT obiekt.
PCYSTR Wskaźnik do const ciągu znaku (lub wchar_tchar) z przeciwnym typem znaku jako CStringT obiekt.

Uwaga

Kod, który wcześniej używał nieudokumentowanych metod CString (takich jak AssignCopy), musi zostać zastąpiony kodem, który używa następujących udokumentowanych metod CStringT (takich jak GetBuffer lub ReleaseBuffer). Te metody są dziedziczone z CSimpleStringTklasy .

Hierarchia dziedziczenia

CSimpleStringT

CStringT

Wymagania

Nagłówek Użyj dla
cstringt.h Obiekty ciągów tylko w MFC
atlstr.h Obiekty ciągów innych niż MFC

CStringT::AllocSysString

Przydziela ciąg zgodny z automatyzacją typu BSTR i kopiuje do niego zawartość CStringT obiektu, w tym znak o wartości null zakończenia.

BSTR AllocSysString() const;

Wartość zwracana

Nowo przydzielony ciąg.

Uwagi

W programach MFC klasa jest zgłaszana, CMemoryException jeśli istnieje niewystarczająca ilość pamięci. W programach ATL jest CAtlException zgłaszany. Ta funkcja jest zwykle używana do zwracania ciągów dla usługi Automation.

Zazwyczaj, jeśli ten ciąg jest przekazywany do funkcji COM jako [in] parametru, to wymaga to, aby obiekt wywołujący zwolnił ciąg. Można to zrobić przy użyciu metody , zgodnie z SysFreeStringopisem w zestawie Windows SDK. Aby uzyskać więcej informacji, zobacz Przydzielanie i zwalnianie pamięci dla elementu BSTR.

Aby uzyskać więcej informacji na temat funkcji alokacji OLE w systemie Windows, zobacz SysAllocString w zestawie Windows SDK.

Przykład

W poniższym przykładzie pokazano użycie metody 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

Konwertuje wszystkie znaki w tym CStringT obiekcie z zestawu znaków ANSI na zestaw znaków OEM.

void AnsiToOem();

Uwagi

Funkcja nie jest dostępna, jeśli _UNICODE jest zdefiniowana.

Przykład

// OEM character 252 on most IBM-compatible computers in
// many 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

Dołącza sformatowane dane do istniejącego CStringT obiektu.

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

Parametry

pszFormat
Ciąg kontrolki formatu.

nFormatID
Identyfikator zasobu ciągu, który zawiera ciąg kontrolki formatu.

argument
Argumenty opcjonalne.

Uwagi

Ta funkcja formatuje i dołącza serię znaków i wartości w obiekcie CStringT. Każdy opcjonalny argument (jeśli istnieje) jest konwertowany i dołączany zgodnie z odpowiednią specyfikacją formatu w pszFormat pliku lub z zasobu ciągu zidentyfikowanego przez nFormatIDelement .

Przykład

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

Porównuje dwa ciągi przy użyciu funkcji _tcscollgeneric-text .

int Collate(PCXSTR psz) const throw();

Parametry

psz
Drugi ciąg używany do porównania.

Wartość zwracana

Zero, jeśli ciągi są identyczne, 0, jeśli ten CStringT obiekt jest mniejszy niż psz, lub > 0, jeśli ten CStringT obiekt jest większy niż psz. <

Uwagi

Funkcja _tcscollgeneric-text, która jest zdefiniowana w TCHAR.Hpliku , jest mapowana na strcoll, wcscolllub _mbscoll, w zależności od zestawu znaków zdefiniowanego w czasie kompilacji. Każda funkcja wykonuje porównanie ciągów z uwzględnieniem wielkości liter zgodnie ze stroną kodową, która jest obecnie używana. Aby uzyskać więcej informacji, zobacz strcoll, , wcscoll_mbscoll, _strcoll_l, , _wcscoll_l_mbscoll_l.

CStringT::CollateNoCase

Porównuje dwa ciągi przy użyciu funkcji _tcscollgeneric-text .

int CollateNoCase(PCXSTR psz) const throw();

Parametry

psz
Drugi ciąg używany do porównania.

Wartość zwracana

Zero, jeśli ciągi są identyczne (ignorując przypadek), < 0, jeśli ten CStringT obiekt jest mniejszy niż psz (ignorując przypadek) lub > 0, jeśli ten CStringT obiekt jest większy niż psz (ignorując przypadek).

Uwagi

Funkcja _tcscollgeneric-text, która jest zdefiniowana w TCHAR.Hpliku , jest mapowana na stricoll, wcsicolllub _mbsicoll, w zależności od zestawu znaków zdefiniowanego w czasie kompilacji. Każda funkcja wykonuje porównanie bez uwzględniania wielkości liter ciągów zgodnie ze stroną kodową, która jest obecnie używana. Aby uzyskać więcej informacji, zobacz , , wcscoll, _mbscoll_strcoll_l, , _wcscoll_l. _mbscoll_lstrcoll

Przykład

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

Porównuje dwa ciągi (z uwzględnieniem wielkości liter).

int Compare(PCXSTR psz) const;

Parametry

psz
Drugi ciąg używany do porównania.

Wartość zwracana

Zero, jeśli ciągi są identyczne, 0, jeśli ten CStringT obiekt jest mniejszy niż psz, lub > 0, jeśli ten CStringT obiekt jest większy niż psz. <

Uwagi

Funkcja _tcscmpgeneric-text, która jest zdefiniowana w TCHAR.Hpliku , jest mapowana na strcmp, wcscmplub _mbscmp, w zależności od zestawu znaków zdefiniowanego w czasie kompilacji. Każda funkcja wykonuje porównanie ciągów z uwzględnieniem wielkości liter i nie ma wpływu na ustawienia regionalne. Aby uzyskać więcej informacji, zobacz strcmp, wcscmp, _mbscmp.

Jeśli ciąg zawiera osadzone wartości null, na potrzeby porównania ciąg jest uznawany za obcięty przy pierwszym osadzonym znaku null.

Przykład

W poniższym przykładzie pokazano użycie metody 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

Porównuje dwa ciągi (bez uwzględniania wielkości liter).

int CompareNoCase(PCXSTR psz) const throw();

Parametry

psz
Drugi ciąg używany do porównania.

Wartość zwracana

Zero, jeśli ciągi są identyczne (ignorując przypadek), <0, jeśli ten CStringT obiekt jest mniejszy niż psz (ignorując przypadek) lub >0, jeśli ten CStringT obiekt jest większy niż psz (ignorując przypadek).

Uwagi

Funkcja _tcsicmpgeneric-text, która jest zdefiniowana w TCHAR.Hpliku , jest mapowana na _stricmp, _wcsicmp lub _mbsicmp, w zależności od zestawu znaków zdefiniowanego w czasie kompilacji. Każda funkcja wykonuje porównanie ciągów bez uwzględniania wielkości liter. Porównanie zależy LC_CTYPE od aspektu ustawień regionalnych, ale nie LC_COLLATE. Aby uzyskać więcej informacji, zobacz , , _wcsicmp, _mbsicmp_stricmp_l, , _wcsicmp_l. _mbsicmp_l_stricmp

Przykład

// 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 Tworzy obiekt.

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);

Parametry

pch
Wskaźnik do tablicy znaków o długości nLength, a nie zakończonych wartościami null.

nLength
Liczba znaków w elem pch.

ch
Pojedynczy znak.

pszSrc
Ciąg o wartości null, który ma zostać skopiowany do tego CStringT obiektu.

pStringMgr
Wskaźnik do menedżera pamięci dla CStringT obiektu. Aby uzyskać więcej informacji na IAtlStringMgr temat zarządzania pamięcią dla CStringTprogramu , zobacz Zarządzanie pamięcią za pomocą języka CStringT.

strSrc
Istniejący CStringT obiekt do skopiowania do tego CStringT obiektu. Aby uzyskać więcej informacji na temat CThisString i CThisSimpleString, zobacz sekcję Uwagi.

varSrc
Obiekt wariantu, który ma zostać skopiowany do tego CStringT obiektu.

BaseType
Typ znaku klasy ciągów. Może być jednym z następujących elementów:

char (w przypadku ciągów znaków ANSI).

wchar_t (w przypadku ciągów znaków Unicode).

TCHAR (zarówno dla ciągów znaków ANSI, jak i Unicode).

bMFCDLL
Wartość logiczna określająca, czy projekt jest biblioteką MFC DLL () czyTRUE też nie (FALSE).

SystemString
Musi mieć wartość System::String, a projekt musi być skompilowany przy użyciu /clrpolecenia .

pString
Uchwyt dla CStringT obiektu.

Uwagi

Ponieważ konstruktory kopiują dane wejściowe do nowego przydzielonego magazynu, mogą wystąpić wyjątki pamięci. Niektóre z tych konstruktorów działają jako funkcje konwersji. Dzięki temu można zastąpić na przykład miejsce, LPTSTR w którym oczekiwano CStringT obiektu.

  • CStringT( LPCSTRlpsz ): tworzy unicode CStringT z ciągu ANSI. Możesz również użyć tego konstruktora, aby załadować zasób ciągu, jak pokazano w poniższym przykładzie.

  • CStringT(LPCWSTRlpsz ): tworzy element CStringT z ciągu Unicode.

  • CStringT( const unsigned char*psz ): Umożliwia konstruowanie elementu CStringT ze wskaźnika do unsigned char.

Uwaga

Zdefiniuj makro, _CSTRING_DISABLE_NARROW_WIDE_CONVERSION aby wyłączyć niejawną konwersję ciągów między ciągami ANSI i Unicode. Makro wyklucza z konstruktorów kompilacji, które obsługują konwersję.

Parametr strSrc może być obiektem CStringT lub CThisSimpleString . W przypadku CStringTprogramu użyj jednego z domyślnych wystąpień (CString, CStringA, lub CStringW); dla CThisSimpleStringelementu , użyj this wskaźnika. CThisSimpleString deklaruje wystąpienie CSimpleStringT klasy, które jest mniejszą klasą ciągów z mniej wbudowaną funkcjonalnością niż CStringT klasa.

Operator CSimpleStringT<>&() przeciążenia konstruuje CStringT obiekt z CSimpleStringT deklaracji.

Uwaga

Chociaż istnieje możliwość utworzenia CStringT wystąpień zawierających osadzone znaki null, zalecamy jej użycie. Wywoływanie metod i operatorów w CStringT obiektach zawierających osadzone znaki null może generować niezamierzone wyniki.

Przykład

// 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 Niszczy obiekt.

~CStringT() throw();

Uwagi

CStringT Niszczy obiekt.

CStringT::Delete

Usuwa znak lub znaki z ciągu rozpoczynającego się od znaku w danym indeksie.

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

Parametry

iIndex
Indeks zerowy pierwszego znaku w CStringT obiekcie do usunięcia.

nCount
Liczba znaków do usunięcia.

Wartość zwracana

Długość zmienionego ciągu.

Uwagi

Jeśli nCount ciąg jest dłuższy niż ciąg, pozostała część ciągu zostanie usunięta.

Przykład

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

Wyszukuje ten ciąg dla pierwszego dopasowania znaku lub podciągów.

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

Parametry

pszSub
Podciąg do wyszukania.

iStart
Indeks znaku w ciągu, od początku rozpoczynający wyszukiwanie, lub 0.

ch
Pojedynczy znak do wyszukania.

Wartość zwracana

Indeks na podstawie zera pierwszego znaku w tym CStringT obiekcie, który pasuje do żądanego podciągu lub znaków; -1, jeśli podciąg lub znak nie zostanie znaleziony.

Uwagi

Funkcja jest przeciążona do akceptowania obu pojedynczych znaków (podobnych do funkcji strchrczasu wykonywania ) i ciągów (podobnych do strstr).

Przykład

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

Wyszukuje ten ciąg jako pierwszy znak, który pasuje do dowolnego znaku zawartego w pszCharSetobiekcie .

int FindOneOf(PCXSTR pszCharSet) const throw();

Parametry

pszCharSet
Ciąg zawierający znaki do dopasowania.

Wartość zwracana

Indeks na podstawie zera pierwszego znaku w tym ciągu, który jest również w pszCharSet; -1, jeśli nie ma dopasowania.

Uwagi

Znajduje pierwsze wystąpienie dowolnego znaku w elemecie pszCharSet.

Przykład

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

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

CStringT::Format

Zapisuje dane sformatowane w taki CStringT sam sposób, jak sprintf_s formatuje dane w tablicy znaków w stylu C.

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

Parametry

nFormatID
Identyfikator zasobu ciągu, który zawiera ciąg kontrolki formatu.

pszFormat
Ciąg kontrolki formatu.

argument
Argumenty opcjonalne.

Uwagi

Ta funkcja formatuje i przechowuje serię znaków i wartości w obiekcie CStringT. Każdy opcjonalny argument (jeśli istnieje) jest konwertowany i wyjściowy zgodnie z odpowiednią specyfikacją formatu w pszFormat lub z zasobu ciągu zidentyfikowanego przez nFormatID.

Wywołanie zakończy się niepowodzeniem, jeśli sam obiekt ciągu jest oferowany jako parametr .Format Na przykład następujący kod spowoduje nieprzewidywalne wyniki:

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

Aby uzyskać więcej informacji, zobacz Składnia specyfikacji formatu: printf i wprintf funkcje.

Przykład

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

Formatuje ciąg komunikatu.

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

Parametry

nFormatID
Identyfikator zasobu ciągu zawierający niesformatowany tekst wiadomości.

pszFormat
Wskazuje ciąg kontrolki formatu. Zostanie on zeskanowany pod kątem wstawiania i odpowiednio sformatowanego. Ciąg formatu jest podobny do ciągów formatu funkcji printfw czasie wykonywania — style, z wyjątkiem tego, że parametry mają być wstawiane w dowolnej kolejności.

argument
Argumenty opcjonalne.

Uwagi

Funkcja wymaga definicji komunikatu jako danych wejściowych. Definicja komunikatu jest określana przez pszFormat zasób ciągu lub z zasobu ciągu zidentyfikowanego przez nFormatIDelement . Funkcja kopiuje sformatowany tekst wiadomości do CStringT obiektu, przetwarza wszelkie osadzone sekwencje wstawiania, jeśli jest to wymagane.

Uwaga

FormatMessage próbuje przydzielić pamięć systemową dla nowo sformatowanego ciągu. Jeśli ta próba zakończy się niepowodzeniem, zostanie automatycznie zgłoszony wyjątek pamięci.

Każde wstawianie musi mieć odpowiedni parametr po parametrze pszFormat or nFormatID . W tekście wiadomości obsługiwane są kilka sekwencji ucieczki w celu dynamicznego formatowania komunikatu. Aby uzyskać więcej informacji, zobacz funkcję systemu Windows FormatMessage w zestawie Windows SDK.

Przykład

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

Formatuje ciąg komunikatu przy użyciu listy argumentów zmiennej.

void FormatMessageV(PCXSTR pszFormat, va_list* pArgList);

Parametry

pszFormat
Wskazuje ciąg kontrolki formatu. Zostanie on zeskanowany pod kątem wstawiania i odpowiednio sformatowanego. Ciąg formatu jest podobny do ciągów formatu funkcji printfw czasie wykonywania — style, z wyjątkiem tego, że parametry mają być wstawiane w dowolnej kolejności.

pArgList
Wskaźnik do listy argumentów.

Uwagi

Funkcja wymaga definicji komunikatu jako danych wejściowych określonych przez pszFormat. Funkcja kopiuje sformatowany tekst wiadomości i zmienną listę argumentów do CStringT obiektu, przetwarza wszelkie osadzone sekwencje wstawiania, jeśli jest to wymagane.

Uwaga

FormatMessageV wywołuje CStringT::FormatMessagemetodę , która próbuje przydzielić pamięć systemową dla nowo sformatowanego ciągu. Jeśli ta próba zakończy się niepowodzeniem, zostanie automatycznie zgłoszony wyjątek pamięci.

Aby uzyskać więcej informacji, zobacz funkcję systemu Windows FormatMessage w zestawie Windows SDK.

CStringT::FormatV

Formatuje ciąg komunikatu przy użyciu listy argumentów zmiennej.

void FormatV(PCXSTR pszFormat, va_list args);

Parametry

pszFormat
Wskazuje ciąg kontrolki formatu. Zostanie on zeskanowany pod kątem wstawiania i odpowiednio sformatowanego. Ciąg formatu jest podobny do ciągów formatu funkcji printfw czasie wykonywania — style, z wyjątkiem tego, że parametry mają być wstawiane w dowolnej kolejności.

args
Wskaźnik do listy argumentów.

Uwagi

Zapisuje sformatowany ciąg i listę zmiennych argumentów do CStringT ciągu w taki sam sposób, jak vsprintf_s formatuje dane w tablicy znaków w stylu C.

Przykład

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

Ustawia ciąg na wartość określonej zmiennej środowiskowej.

BOOL GetEnvironmentVariable(PCXSTR pszVar);

Parametry

pszVar
Wskaźnik do ciągu zakończonego wartością null, który określa zmienną środowiskową.

Wartość zwracana

Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.

Uwagi

Pobiera wartość określonej zmiennej z bloku środowiskowego procesu wywołującego. Wartość jest w postaci ciągu znaków zakończonych wartością null.

Przykład

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

Wstawia pojedynczy znak lub podciąg w danym indeksie w ciągu.

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

Parametry

iIndex
Indeks znaku, przed którym nastąpi wstawienie.

psz
Wskaźnik do podciągu, który ma zostać wstawiony.

ch
Znak, który ma zostać wstawiony.

Wartość zwracana

Długość zmienionego ciągu.

Uwagi

Parametr iIndex identyfikuje pierwszy znak, który zostanie przeniesiony, aby zapewnić miejsce na znak lub podciąg. Jeśli nIndex ma wartość zero, wstawianie zostanie wykonane przed całym ciągiem. Jeśli parametr nIndex jest wyższy niż długość ciągu, funkcja połączy obecny ciąg i nowy materiał dostarczony przez ch element lub psz.

Przykład

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

Wyodrębnia z tego CStringT obiektu znaki z lewej strony nCount i zwraca kopię wyodrębnionego podciągu.

CStringT Left(int nCount) const;

Parametry

nCount
Liczba znaków do wyodrębnienia z tego CStringT obiektu.

Wartość zwracana

CStringT Obiekt zawierający kopię określonego zakresu znaków. Zwrócony CStringT obiekt może być pusty.

Uwagi

Jeśli nCount przekroczy długość ciągu, cały ciąg zostanie wyodrębniony. Left jest podobna do funkcji Podstawowa Left .

W przypadku zestawów znaków wielobajtowych (MBCS) nCount każda sekwencja 8-bitowa jest traktowana jako znak, dzięki nCount czemu zwraca liczbę znaków wielobajtowych pomnożonych przez dwa.

Przykład

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

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

CStringT::LoadString

Odczytuje zasób ciągu systemu Windows zidentyfikowany przez identyfikator nID do istniejącego CStringT obiektu.

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

Parametry

hInstance
Dojście do wystąpienia modułu.

nID
Identyfikator zasobu ciągu systemu Windows.

wLanguageID
Język zasobu ciągu.

Wartość zwracana

Niezerowe, jeśli ładowanie zasobów zakończyło się pomyślnie; w przeciwnym razie 0.

Uwagi

Ładuje zasób ciągu (nID) z określonego modułu (hInstance) przy użyciu określonego języka (wLanguage).

Przykład

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

CAtlString s;
s.LoadString(IDS_APP_TITLE);   

CStringT::MakeLower

Konwertuje CStringT obiekt na małe litery.

CStringT& MakeLower();

Wartość zwracana

Wynikowy ciąg małych liter.

Przykład

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

CAtlString s(_T("ABC"));

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

CStringT::MakeReverse

Odwraca kolejność znaków w CStringT obiekcie.

CStringT& MakeReverse();

Wartość zwracana

Wynikowy odwrócony ciąg.

Przykład

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

CAtlString s(_T("abc"));

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

CStringT::MakeUpper

Konwertuje CStringT obiekt na wielkie litery.

CStringT& MakeUpper();

Wartość zwracana

Wynikowy ciąg z wielkimi literami.

Uwagi

Przykład

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

CAtlString s(_T("abc"));

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

CStringT::Mid

Wyodrębnia podciąg długości nCount znaków z tego CStringT obiektu, zaczynając od pozycji iFirst (od zera).

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

Parametry

iFirst
Indeks na podstawie zera pierwszego znaku w tym CStringT obiekcie, który ma zostać uwzględniony w wyodrębnionym podciągnie.

nCount
Liczba znaków do wyodrębnienia z tego CStringT obiektu. Jeśli ten parametr nie zostanie podany, pozostała część ciągu zostanie wyodrębniona.

Wartość zwracana

CStringT Obiekt zawierający kopię określonego zakresu znaków. Zwrócony CStringT obiekt może być pusty.

Uwagi

Funkcja zwraca kopię wyodrębnionego podciągu. Mid jest podobny do podstawowej funkcji Mid (z tą różnicą, że indeksy w warstwie Podstawowa są oparte na jednej podstawie).

W przypadku zestawów znaków wielobajtowych (MBCS) nCount odnosi się do każdego 8-bitowego znaku; oznacza to, że bajt główny i końcowy w jednym wielobajtowym znaku są liczone jako dwa znaki.

Przykład

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

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

CStringT::OemToAnsi

Konwertuje wszystkie znaki w tym CStringT obiekcie z zestawu znaków OEM na zestaw znaków ANSI.

void OemToAnsi();

Uwagi

Ta funkcja nie jest dostępna, jeśli _UNICODE jest zdefiniowana.

Przykład

Zobacz przykład dla elementu CStringT::AnsiToOem.

CStringT::operator =

Przypisuje nową wartość do ciągu.

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);

Parametry

strSrc
Element do CStringT przypisania do tego ciągu.

str
Odwołanie do CThisSimpleString obiektu.

bMFCDLL
Wartość logiczna określająca, czy projekt jest biblioteką MFC DLL, czy też nie.

BaseType
Typ podstawowy ciągu.

var
Obiekt wariantu do przypisania do tego ciągu.

ch
Znak ANSI lub Unicode do przypisania do ciągu.

pszSrc
Wskaźnik do przypisanego oryginalnego ciągu.

Uwagi

Operator przypisania akceptuje inny CStringT obiekt, wskaźnik znaku lub pojedynczy znak. Wyjątki pamięci mogą wystąpić za każdym razem, gdy używasz tego operatora, ponieważ można przydzielić nowy magazyn.

Aby uzyskać informacje na temat CThisSimpleStringprogramu , zobacz sekcję Uwagi w temacie CStringT::CStringT.

Uwaga

Chociaż istnieje możliwość utworzenia CStringT wystąpień zawierających osadzone znaki null, zalecamy jej użycie. Wywoływanie metod i operatorów w CStringT obiektach zawierających osadzone znaki null może generować niezamierzone wyniki.

CStringT::operator +

Łączy dwa ciągi lub znak i ciąg.

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,);

Parametry

ch1
Znak ANSI lub Unicode do łączenia z ciągiem.

ch2
Znak ANSI lub Unicode do łączenia z ciągiem.

str1
Element CStringT do łączenia z ciągiem lub znakiem.

str2
Element CStringT do łączenia z ciągiem lub znakiem.

psz1
Wskaźnik do ciągu zakończonego wartością null w celu połączenia z ciągiem lub znakiem.

psz2
Wskaźnik do ciągu, aby połączyć ciąg z ciągiem lub znakiem.

Uwagi

Istnieje siedem przeciążeń formularzy CStringT::operator+ funkcji. Pierwsza wersja łączy dwa istniejące CStringT obiekty. Następne dwa łączy CStringT obiekt i ciąg zakończony wartością null. Następne dwa łączy CStringT obiekt i znak ANSI. Ostatnie dwa łączy CStringT obiekt i znak Unicode.

Uwaga

Chociaż istnieje możliwość utworzenia CStringT wystąpień zawierających osadzone znaki null, zalecamy jej użycie. Wywoływanie metod i operatorów w CStringT obiektach zawierających osadzone znaki null może generować niezamierzone wyniki.

Przykład

// 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 +=

Łączy znaki na końcu ciągu.

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);

Parametry

str
Odwołanie do CThisSimpleString obiektu.

bMFCDLL
Wartość logiczna określająca, czy projekt jest biblioteką MFC DLL, czy też nie.

BaseType
Typ podstawowy ciągu.

var
Obiekt wariantu, który ma być połączony z tym ciągiem.

ch
Znak ANSI lub Unicode do łączenia z ciągiem.

pszSrc
Wskaźnik do oryginalnego ciągu, który jest połączony.

strSrc
Element CStringT do łączenia z tym ciągiem.

Uwagi

Operator akceptuje inny CStringT obiekt, wskaźnik znaku lub pojedynczy znak. Wyjątki pamięci mogą wystąpić za każdym razem, gdy używasz tego operatora łączenia, ponieważ można przydzielić nowy magazyn dla znaków dodanych do tego CStringT obiektu.

Aby uzyskać informacje na temat CThisSimpleStringprogramu , zobacz sekcję Uwagi w temacie CStringT::CStringT.

Uwaga

Chociaż istnieje możliwość utworzenia CStringT wystąpień zawierających osadzone znaki null, zalecamy jej użycie. Wywoływanie metod i operatorów w CStringT obiektach zawierających osadzone znaki null może generować niezamierzone wyniki.

Przykład

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

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

CStringT::operator ==

Określa, czy dwa ciągi są logicznie równe.

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();

Parametry

ch1
Znak ANSI lub Unicode do porównania.

ch2
Znak ANSI lub Unicode do porównania.

str1
A CStringT dla porównania.

str2
A CStringT dla porównania.

psz1
Wskaźnik do ciągu zakończonego wartością null na potrzeby porównania.

psz2
Wskaźnik do ciągu zakończonego wartością null na potrzeby porównania.

Uwagi

Sprawdza, czy ciąg lub znak po lewej stronie jest równy ciągowi lub znakowi po prawej stronie, i zwraca TRUE lub FALSE odpowiednio.

Przykład

// 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 !=

Określa, czy dwa ciągi są logicznie nie równe.

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();

Parametry

ch1
Znak ANSI lub Unicode do łączenia z ciągiem.

ch2
Znak ANSI lub Unicode do łączenia z ciągiem.

str1
A CStringT dla porównania.

str2
A CStringT dla porównania.

psz1
Wskaźnik do ciągu zakończonego wartością null na potrzeby porównania.

psz2
Wskaźnik do ciągu zakończonego wartością null na potrzeby porównania.

Uwagi

Sprawdza, czy ciąg lub znak po lewej stronie nie jest równy ciągowi ani znakowi po prawej stronie.

Przykład

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

Określa, czy ciąg po lewej stronie operatora jest mniejszy niż ciąg po prawej stronie.

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();

Parametry

str1
A CStringT dla porównania.

str2
A CStringT dla porównania.

psz1
Wskaźnik do ciągu zakończonego wartością null na potrzeby porównania.

psz2
Wskaźnik do ciągu zakończonego wartością null na potrzeby porównania.

Uwagi

Porównanie leksykograficzne między ciągami, znakami według znaków do:

  • Znajduje dwa odpowiadające im znaki nierówne, a wynik ich porównania jest traktowany jako wynik porównania między ciągami.

  • Nie znajduje żadnych nierówności, ale jeden ciąg ma więcej znaków niż drugi, a krótszy ciąg jest uznawany za mniejszy niż dłuższy ciąg.

  • Nie znajduje nierówności i stwierdza, że ciągi mają taką samą liczbę znaków, więc ciągi są równe.

Przykład

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

Określa, czy ciąg po lewej stronie operatora jest większy niż ciąg po prawej stronie.

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();

Parametry

str1
A CStringT dla porównania.

str2
A CStringT dla porównania.

psz1
Wskaźnik do ciągu zakończonego wartością null na potrzeby porównania.

psz2
Wskaźnik do ciągu zakończonego wartością null na potrzeby porównania.

Uwagi

Porównanie leksykograficzne między ciągami, znakami według znaków do:

  • Znajduje dwa odpowiadające im znaki nierówne, a wynik ich porównania jest traktowany jako wynik porównania między ciągami.

  • Nie znajduje żadnych nierówności, ale jeden ciąg ma więcej znaków niż drugi, a krótszy ciąg jest uznawany za mniejszy niż dłuższy ciąg.

  • Nie znajduje nierówności i stwierdza, że ciągi mają taką samą liczbę znaków, więc ciągi są równe.

Przykład

// 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 <=

Określa, czy ciąg po lewej stronie operatora jest mniejszy niż lub równy ciągowi po prawej stronie.

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();

Parametry

str1
A CStringT dla porównania.

str2
A CStringT dla porównania.

psz1
Wskaźnik do ciągu zakończonego wartością null na potrzeby porównania.

psz2
Wskaźnik do ciągu zakończonego wartością null na potrzeby porównania.

Uwagi

Porównanie leksykograficzne między ciągami, znakami według znaków do:

  • Znajduje dwa odpowiadające im znaki nierówne, a wynik ich porównania jest traktowany jako wynik porównania między ciągami.

  • Nie znajduje żadnych nierówności, ale jeden ciąg ma więcej znaków niż drugi, a krótszy ciąg jest uznawany za mniejszy niż dłuższy ciąg.

  • Nie znajduje nierówności i stwierdza, że ciągi mają taką samą liczbę znaków, więc ciągi są równe.

Przykład

// 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 >=

Określa, czy ciąg po lewej stronie operatora jest większy niż lub równy ciągowi po prawej stronie.

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();

Parametry

str1
A CStringT dla porównania.

str2
A CStringT dla porównania.

psz1
Wskaźnik do ciągu do porównania.

psz2
Wskaźnik do ciągu do porównania.

Uwagi

Porównanie leksykograficzne między ciągami, znakami według znaków do:

  • Znajduje dwa odpowiadające im znaki nierówne, a wynik ich porównania jest traktowany jako wynik porównania między ciągami.

  • Nie znajduje żadnych nierówności, ale jeden ciąg ma więcej znaków niż drugi, a krótszy ciąg jest uznawany za mniejszy niż dłuższy ciąg.

  • Nie znajduje nierówności i stwierdza, że ciągi mają taką samą liczbę znaków, więc ciągi są równe.

Przykład

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

Usuwa wszystkie wystąpienia określonego znaku z ciągu.

int Remove(XCHAR chRemove);

Parametry

chRemove
Znak, który ma zostać usunięty z ciągu.

Wartość zwracana

Liczba znaków usuniętych z ciągu. Zero, jeśli ciąg nie zostanie zmieniony.

Uwagi

Porównania dla znaku są uwzględniane wielkości liter.

Przykład

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

Istnieją dwie wersje programu Replace. Pierwsza wersja zastępuje jedną lub więcej kopii podciągów przy użyciu innego podciągu. Oba podciągy są zakończone wartością null. Druga wersja zastępuje jedną lub więcej kopii znaku przy użyciu innego znaku. Obie wersje działają na danych znaków przechowywanych w programie CStringT.

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

Parametry

pszOld
Wskaźnik do ciągu zakończonego wartością null, który ma zostać zastąpiony przez pszNew.

pszNew
Wskaźnik do ciągu zakończonego wartości null, który zastępuje pszOldelement .

chOld
Znak, który ma zostać zastąpiony przez chNew.

chNew
Znak zastępujący chOld.

Wartość zwracana

Zwraca liczbę zamienionych wystąpień znaku lub podciągów albo zero, jeśli ciąg nie zostanie zmieniony.

Uwagi

Replace może zmienić długość ciągu, ponieważ pszNew i pszOld nie musi być taka sama, a kilka kopii starego podciągu można zmienić na nowy. Funkcja wykonuje dopasowanie uwzględniające wielkość liter.

CStringT Przykłady wystąpień to CString, CStringAi CStringW.

W przypadku CStringAprogramu Replace działa z znakami ANSI lub wielobajtowymi (MBCS). W przypadku CStringWprogramu Replace działa z szerokimi znakami.

W przypadku CStringelementu typ danych znaków jest wybierany w czasie kompilacji na podstawie tego, czy stałe w poniższej tabeli są zdefiniowane.

Zdefiniowana stała Typ danych znaków
_UNICODE Znaki dwubajtowe
_MBCS Znaki wielo bajtowe
Żadna Znaki jedno bajtów
Oba Niezdefiniowane

Przykład

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

Wyszukuje ten CStringT obiekt pod kątem ostatniego dopasowania znaku.

int ReverseFind(XCHAR ch) const throw();

Parametry

ch
Znak do wyszukania.

Wartość zwracana

Indeks zera ostatniego znaku w tym CStringT obiekcie zgodny z żądanym znakiem lub -1, jeśli znak nie zostanie znaleziony.

Uwagi

Funkcja jest podobna do funkcji strrchrczasu wykonywania .

Przykład

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

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

Wyodrębnia ostatnie (czyli najbardziej prawe) nCount znaki z tego CStringT obiektu i zwraca kopię wyodrębnionego podciągu.

CStringT Right(int nCount) const;

Parametry

nCount
Liczba znaków do wyodrębnienia z tego CStringT obiektu.

Wartość zwracana

CStringT Obiekt zawierający kopię określonego zakresu znaków. Zwrócony CStringT obiekt może być pusty.

Uwagi

Jeśli nCount przekroczy długość ciągu, cały ciąg zostanie wyodrębniony. Right jest podobna do funkcji Podstawowa Right (z tą różnicą, że indeksy w warstwie Podstawowa są oparte na zerach).

W przypadku zestawów znaków wielobajtowych (MBCS) nCount odnosi się do każdego 8-bitowego znaku; oznacza to, że bajt główny i końcowy w jednym wielobajtowym znaku są liczone jako dwa znaki.

Przykład

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

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

CStringT::SetSysString

Ponownie przydziela BSTR wskazywane przez pbstr element i kopiuje do niego zawartość CStringT obiektu, w tym NULL znak.

BSTR SetSysString(BSTR* pbstr) const;

Parametry

pbstr
Wskaźnik do ciągu znaków.

Wartość zwracana

Nowy ciąg.

Uwagi

W zależności od zawartości CStringT obiektu wartość BSTR przywołyną przez pbstr program może ulec zmianie. Funkcja zgłasza błąd CMemoryException , jeśli istnieje niewystarczająca ilość pamięci.

Ta funkcja jest zwykle używana do zmiany wartości ciągów przekazywanych przez odwołanie do usługi Automation.

Przykład

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

Wyodrębnia znaki z ciągu, zaczynając od pierwszego znaku, które nie są w zestawie znaków identyfikowanych przez pszCharSet.

CStringT SpanExcluding(PCXSTR pszCharSet) const;

Parametry

pszCharSet
Ciąg interpretowany jako zestaw znaków.

Wartość zwracana

Podciąg zawierający znaki w ciągu, które nie znajdują się w pszCharSetciągu , zaczynając od pierwszego znaku w ciągu i kończącego się pierwszym znakiem znajdującym się również w ciągu pszCharSet (czyli zaczynając od pierwszego znaku w ciągu i maksymalnie z wyłączeniem pierwszego znaku w znalezionym ciągu pszCharSet). Zwraca cały ciąg, jeśli w ciągu nie znaleziono żadnego znaku pszCharSet .

Uwagi

SpanExcluding wyodrębnia i zwraca wszystkie znaki poprzedzające pierwsze wystąpienie znaku z pszCharSet (innymi słowy, znak z pszCharSet i wszystkie znaki występujące po nim w ciągu, nie są zwracane). Jeśli w ciągu nie znaleziono żadnego znaku pszCharSet , SpanExcluding zwraca cały ciąg.

Przykład

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

Wyodrębnia znaki z ciągu, zaczynając od pierwszego znaku, które znajdują się w zestawie znaków zidentyfikowanych przez pszCharSet.

CStringT SpanIncluding(PCXSTR pszCharSet) const;

Parametry

pszCharSet
Ciąg interpretowany jako zestaw znaków.

Wartość zwracana

Podciąg zawierający znaki w ciągu, które znajdują się w pszCharSetciągu , począwszy od pierwszego znaku w ciągu i kończące się, gdy znak znajduje się w ciągu, który nie znajduje się w pszCharSet. SpanIncluding Zwraca pusty podciąg, jeśli pierwszy znak w ciągu nie znajduje się w określonym zestawie.

Uwagi

Jeśli pierwszy znak ciągu nie znajduje się w zestawie znaków, SpanIncluding zwraca pusty ciąg. W przeciwnym razie zwraca sekwencję kolejnych znaków, które znajdują się w zestawie.

Przykład

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

Znajduje następny token w ciągu docelowym

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

Parametry

pszTokens
Ciąg zawierający ograniczniki tokenu. Kolejność tych ograniczników nie jest ważna.

iStart
Indeks oparty na zera, aby rozpocząć wyszukiwanie.

Wartość zwracana

CStringT Obiekt zawierający bieżącą wartość tokenu.

Uwagi

Funkcja Tokenize znajduje następny token w ciągu docelowym. Zestaw znaków w pliku pszTokens określa możliwe ograniczniki tokenu do znalezienia. Na każdym wywołaniu Tokenize funkcji rozpoczyna się od iStart, pomija wiodące ograniczniki i zwraca CStringT obiekt zawierający bieżący token, który jest ciągiem znaków do następnego znaku ogranicznika. Wartość parametru iStart jest aktualizowana tak, aby była pozycją po znaku ogranicznika końcowego lub -1, jeśli osiągnięto koniec ciągu. Więcej tokenów można podzielić z pozostałej części ciągu docelowego przez serię wywołań do Tokenize, używając polecenia , aby iStart śledzić, gdzie w ciągu będzie odczytywany następny token. Jeśli nie ma więcej tokenów, funkcja zwróci pusty ciąg i iStart zostanie ustawiona na -1.

W przeciwieństwie do funkcji tokenizowania CRT, takich jak strtok_s, _strtok_s_l, wcstok_s_wcstok_s_l, _mbstok_s, _mbstok_s_l, nie Tokenize modyfikuje ciągu docelowego.

Przykład

// 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);
};   

Dane wyjściowe z tego przykładu są następujące:

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

CStringT::Trim

Przycina znaki wiodące i końcowe z ciągu.

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

Parametry

chTarget
Znak docelowy do przycinania.

pszTargets
Wskaźnik do ciągu zawierającego znaki docelowe do przycinania. Wszystkie wystąpienia wiodących i końcowych znaków w obiekcie pszTargets zostaną przycięte z CStringT obiektu.

Wartość zwracana

Zwraca przycięty ciąg.

Uwagi

Usuwa wszystkie wystąpienia wiodące i końcowe jednego z następujących elementów:

  • Znak określony przez chTarget.

  • Wszystkie znaki znalezione w ciągu określonym przez pszTargets.

  • Odstępu.

Przykład

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

Dane wyjściowe z tego przykładu są następujące:

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

CStringT::TrimLeft

Przycina znaki wiodące z ciągu.

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

Parametry

chTarget
Znak docelowy do przycinania.

pszTargets
Wskaźnik do ciągu zawierającego znaki docelowe do przycinania. Wszystkie wiodące wystąpienia znaków w obiekcie pszTargets zostaną przycięte z CStringT obiektu.

Wartość zwracana

Wynikowy przycięty ciąg.

Uwagi

Usuwa wszystkie wystąpienia wiodące i końcowe jednego z następujących elementów:

  • Znak określony przez chTarget.

  • Wszystkie znaki znalezione w ciągu określonym przez pszTargets.

  • Odstępu.

Przykład

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

Przycina końcowe znaki z ciągu.

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

Parametry

chTarget
Znak docelowy do przycinania.

pszTargets
Wskaźnik do ciągu zawierającego znaki docelowe do przycinania. Wszystkie końcowe wystąpienia znaków w obiekcie pszTargets zostaną przycięte z CStringT obiektu.

Wartość zwracana

CStringT Zwraca obiekt zawierający przycięty ciąg.

Uwagi

Usuwa końcowe wystąpienia jednego z następujących elementów:

  • Znak określony przez chTarget.

  • Wszystkie znaki znalezione w ciągu określonym przez pszTargets.

  • Odstępu.

Wersja CStringT& TrimRight(XCHAR chTarget) akceptuje jeden parametr znaku i usuwa wszystkie kopie tego znaku z końca CStringT danych ciągu. Zaczyna się od końca ciągu i działa w kierunku przodu. Zatrzymuje się, gdy znajdzie inny znak lub gdy CStringT zabraknie danych znaków.

Wersja CStringT& TrimRight(PCXSTR pszTargets) akceptuje ciąg o wartości null, który zawiera wszystkie różne znaki do wyszukania. Usuwa wszystkie kopie tych znaków w CStringT obiekcie. Zaczyna się na końcu ciągu i działa w kierunku przodu. Zatrzymuje się, gdy znajdzie znak, który nie znajduje się w ciągu docelowym lub gdy CStringT zabraknie danych znaków. Nie próbuje dopasować całego ciągu docelowego do podciągu na końcu elementu CStringT.

Wersja CStringT& TrimRight() nie wymaga żadnych parametrów. Przycina wszystkie końcowe znaki odstępu CStringT od końca ciągu. Znaki odstępu mogą być podziałami wierszy, spacjami lub tabulatorami.

Przykład

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

Zobacz też

Wykres hierarchii
Klasy udostępnione ATL/MFC
CSimpleStringT Klasa