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.
Elementy członkowskie
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 CStringT
program .
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
, CStringA
i CStringW
są eksportowane z biblioteki MFC DLL (MFC90.DLL), nigdy 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 | Deklaracja |
---|---|
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 | Deklaracja |
---|---|
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 | Deklaracja |
---|---|
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żnaCStringT
traktować jako rzeczywisty ciąg, a nie wskaźnik do ciągu.Można swobodnie zastępować
CStringT
obiekty argumentówPCXSTR
funkcji.Niestandardowe zarządzanie pamięcią dla 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_t char ) 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_t char ) 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 CSimpleStringT
klasy .
Hierarchia dziedziczenia
CStringT
Wymagania
Nagłówek | Na użytek |
---|---|
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 SysFreeString
opisem 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 nFormatID
element .
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 _tcscoll
generic-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 _tcscoll
generic-text, która jest zdefiniowana w TCHAR.H
pliku , jest mapowana na strcoll
, wcscoll
lub _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 _tcscoll
generic-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 _tcscoll
generic-text, która jest zdefiniowana w TCHAR.H
pliku , jest mapowana na stricoll
, wcsicoll
lub _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_l
strcoll
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 _tcscmp
generic-text, która jest zdefiniowana w TCHAR.H
pliku , jest mapowana na strcmp
, wcscmp
lub _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 _tcsicmp
generic-text, która jest zdefiniowana w TCHAR.H
pliku , 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 CStringT
programu , 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 /clr
polecenia .
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
(LPCSTR
lpsz
): tworzy unicodeCStringT
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(
LPCWSTR
lpsz
): tworzy elementCStringT
z ciągu Unicode.CStringT
(const unsigned char*
psz
): Umożliwia konstruowanie elementuCStringT
ze wskaźnika dounsigned 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 CStringT
programu użyj jednego z domyślnych wystąpień (CString
, CStringA
, lub CStringW
); dla CThisSimpleString
elementu , 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 strchr
czasu 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 pszCharSet
obiekcie .
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 printf
w 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 nFormatID
element . 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 printf
w 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::FormatMessage
metodę , 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 printf
w 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 CThisSimpleString
programu , 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 CThisSimpleString
programu , 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 pszOld
element .
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
, CStringA
i CStringW
.
W przypadku CStringA
programu Replace
działa z znakami ANSI lub wielobajtowymi (MBCS). W przypadku CStringW
programu Replace
działa z szerokimi znakami.
W przypadku CString
elementu 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 strrchr
czasu wykonywania .
Przykład
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcabc"));
ASSERT(s.ReverseFind(_T('b')) == 4);
CStringT::Right
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 pszCharSet
cią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 pszCharSet
cią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