CStringT
-Klasse
Diese Klasse stellt ein - CStringT
Objekt dar.
Syntax
template<typename BaseType, class StringTraits>
class CStringT :
public CSimpleStringT<BaseType,
_CSTRING_IMPL_::_MFCDLLTraitsCheck<BaseType, StringTraits>::c_bIsMFCDLLTraits>
Parameter
BaseType
Der Zeichentyp der Zeichenfolgenklasse. Dabei kann es sich um eine der folgenden Methoden handeln:
char
(für ANSI-Zeichenfolgen).wchar_t
(für Unicode-Zeichenfolgen).TCHAR
(für ANSI- und Unicode-Zeichenfolgen).
StringTraits
Bestimmt, ob die Zeichenfolgenklasse unterstützung für die C Run-Time (CRT)-Bibliothek benötigt und wo sich Zeichenfolgenressourcen befinden. Dabei kann es sich um eine der folgenden Methoden handeln:
StrTraitATL<wchar_t | char | TCHAR, ChTraitsCRT<wchar_t | char | TCHAR>>
Die -Klasse erfordert CRT-Unterstützung und sucht in dem von
m_hInstResource
angegebenen Modul (einem Member der Modulklasse der Anwendung) nach Ressourcenzeichenfolgen.StrTraitATL<wchar_t | char | TCHAR, ChTraitsOS<wchar_t | char |TCHAR>>
Die -Klasse erfordert keine CRT-Unterstützung und sucht nach Ressourcenzeichenfolgen in dem von
m_hInstResource
angegebenen Modul (ein Member der Modulklasse der Anwendung).StrTraitMFC<wchar_t | char | TCHAR, ChTraitsCRT<wchar_t | char | TCHAR>>
Die -Klasse erfordert CRT-Unterstützung und sucht mithilfe des MFC-Standardsuchalgorithmus nach Ressourcenzeichenfolgen.
StrTraitMFC<wchar_t | char | TCHAR, ChTraitsOS<wchar_t | char | TCHAR>>
Die -Klasse erfordert keine CRT-Unterstützung und sucht mithilfe des MFC-Standardsuchalgorithmus nach Ressourcenzeichenfolgen.
Member
Öffentliche Konstruktoren
name | BESCHREIBUNG |
---|---|
CStringT::CStringT |
Erstellt ein CStringT -Objekt auf verschiedene Weise. |
CStringT::~CStringT |
Zerstört ein CStringT -Objekt. |
Öffentliche Methoden
name | BESCHREIBUNG |
---|---|
CStringT::AllocSysString |
Ordnet eine BSTR aus CStringT Daten zu. |
CStringT::AnsiToOem |
Konvertiert den ANSI-Zeichensatz in den OEM-Zeichensatz. |
CStringT::AppendFormat |
Fügt formatierte Daten an ein vorhandenes CStringT Objekt an. |
CStringT::Collate |
Vergleicht zwei Zeichenfolgen (wobei die Groß-/Kleinschreibung beachtet wird, wobei gebietsschemaspezifische Informationen verwendet werden). |
CStringT::CollateNoCase |
Vergleicht zwei Zeichenfolgen (ohne Berücksichtigung der Groß-/Kleinschreibung, verwendet gebietsschemaspezifische Informationen). |
CStringT::Compare |
Vergleicht zwei Zeichenfolgen (Groß-/Kleinschreibung wird beachtet). |
CStringT::CompareNoCase |
Vergleicht zwei Zeichenfolgen (ohne Unterscheidung nach Groß-/Kleinschreibung). |
CStringT::Delete |
Löscht ein Oder mehrere Zeichen aus einer Zeichenfolge. |
CStringT::Find |
Sucht ein Zeichen oder eine Teilzeichenfolge innerhalb einer größeren Zeichenfolge. |
CStringT::FindOneOf |
Sucht das erste übereinstimmende Zeichen aus einem Satz. |
CStringT::Format |
Formatiert die Zeichenfolge wie bezieht sprintf . |
CStringT::FormatMessage |
Formatiert eine Meldungszeichenfolge. |
CStringT::FormatMessageV |
Formatiert eine Nachrichtenzeichenfolge mithilfe einer Variablenargumentliste. |
CStringT::FormatV |
Formatiert die Zeichenfolge mithilfe einer Variablenliste von Argumenten. |
CStringT::GetEnvironmentVariable |
Legt die Zeichenfolge auf den Wert der angegebenen Umgebungsvariablen fest. |
CStringT::Insert |
Fügt ein einzelnes Zeichen oder eine Teilzeichenfolge am angegebenen Index innerhalb der Zeichenfolge ein. |
CStringT::Left |
Extrahiert den linken Teil einer Zeichenfolge. |
CStringT::LoadString |
Lädt ein vorhandenes CStringT Objekt aus einer Windows Ressource. |
CStringT::MakeLower |
Konvertiert alle Zeichen in dieser Zeichenfolge in Kleinbuchstaben. |
CStringT::MakeReverse |
Kehrt die Zeichenfolge um. |
CStringT::MakeUpper |
Konvertiert alle Zeichen in dieser Zeichenfolge in Großbuchstaben. |
CStringT::Mid |
Extrahiert den mittleren Teil einer Zeichenfolge. |
CStringT::OemToAnsi |
Konvertiert den OEM-Zeichensatz in den ANSI-Zeichensatz. |
CStringT::Remove |
Entfernt angegebene Zeichen aus einer Zeichenfolge. |
CStringT::Replace |
Ersetzt die angegebenen Zeichen durch andere Zeichen. |
CStringT::ReverseFind |
Sucht ein Zeichen in einer größeren Zeichenfolge. beginnt am Ende. |
CStringT::Right |
Extrahiert den rechten Teil einer Zeichenfolge. |
CStringT::SetSysString |
Legt ein vorhandenes BSTR -Objekt mit Daten aus einem - CStringT Objekt fest. |
CStringT::SpanExcluding |
Extrahiert Zeichen aus der Zeichenfolge, beginnend mit dem ersten Zeichen, die sich nicht in dem durch pszCharSet identifizierten Zeichensatz befinden. |
CStringT::SpanIncluding |
Extrahiert eine Teilzeichenfolge, die nur die Zeichen in einem Satz enthält. |
CStringT::Tokenize |
Extrahiert angegebene Token in einer Zielzeichenfolge. |
CStringT::Trim |
Entfernt alle führenden und nachgestellten Leerzeichen aus der Zeichenfolge. |
CStringT::TrimLeft |
Entfernt führende Leerzeichen aus der Zeichenfolge. |
CStringT::TrimRight |
Entfernt nachfolgende Leerzeichen aus der Zeichenfolge. |
Operatoren
Name | BESCHREIBUNG |
---|---|
CStringT::operator = |
Weist einem -Objekt einen CStringT neuen Wert zu. |
CStringT::operator + |
Verkettet zwei Zeichenfolgen oder ein Zeichen und eine Zeichenfolge. |
CStringT::operator += |
Verkettet eine neue Zeichenfolge am Ende einer vorhandenen Zeichenfolge. |
CStringT::operator == |
Bestimmt, ob zwei Zeichenfolgen logisch gleich sind. |
CStringT::operator != |
Bestimmt, ob zwei Zeichenfolgen nicht logisch gleich sind. |
CStringT::operator < |
Bestimmt, ob die Zeichenfolge links vom Operator kleiner als die Zeichenfolge auf der rechten Seite ist. |
CStringT::operator > |
Bestimmt, ob die Zeichenfolge links vom Operator größer als die Zeichenfolge rechts vom Operator ist. |
CStringT::operator <= |
Bestimmt, ob die Zeichenfolge links vom Operator kleiner oder gleich der Zeichenfolge rechts vom Operator ist. |
CStringT::operator >= |
Bestimmt, ob die Zeichenfolge links vom Operator größer oder gleich der Zeichenfolge rechts vom Operator ist. |
Hinweise
CStringT
erbt von derCSimpleStringT
-Klasse. Erweiterte Features, z. B. Zeichenbearbeitung, Sortierung und Suche, werden von CStringT
implementiert.
Hinweis
CStringT
-Objekte können Ausnahmen auslösen. Dies tritt auf, wenn für ein CStringT
-Objekt aus irgendeinem Grund nicht genügend Arbeitsspeicher verfügbar ist.
Ein CStringT
-Objekt besteht aus einer Zeichensequenz variabler Länge. CStringT
stellt Funktionen und Operatoren mit einer Syntax bereit, die der von Basic ähnelt. Verkettungs- und Vergleichsoperatoren sowie eine vereinfachte Speicherverwaltung erleichtern die CStringT
Verwendung von Objekten als normale Zeichenarrays.
Hinweis
Obwohl es möglich ist, Instanzen zu erstellen CStringT
, die eingebettete NULL-Zeichen enthalten, wird dagegen empfohlen. Das Aufrufen von Methoden und Operatoren für CStringT
Objekte, die eingebettete NULL-Zeichen enthalten, kann zu unbeabsichtigten Ergebnissen führen.
Durch die Verwendung verschiedener Kombinationen der BaseType
Parameter CStringT
und StringTraits
können Objekte in den folgenden Typen enthalten sein, die von den ATL-Bibliotheken vordefiniert wurden.
Bei Verwendung in einer ATL-Anwendung:
CString
, CStringA
und CStringW
werden aus der MFC-DLL (MFC90.DLL) exportiert, nie aus Benutzer-DLLs. Dadurch wird verhindert, dass CStringT
mehrmals definiert wird.
Hinweis
Wenn Ihr Code die Problemumgehung für Linkerfehler enthält, die unter Exportieren von Zeichenfolgenklassen mit CStringT beschrieben werden, sollten Sie diesen Code entfernen. Es wird nicht mehr benötigt.
Die folgenden Zeichenfolgentypen sind in MFC-basierten Anwendungen verfügbar:
CStringT-Typ | Deklaration |
---|---|
CStringA |
Eine ZEICHENFOLGE vom Typ ANSI mit CRT-Unterstützung. |
CStringW |
Eine Unicode-Zeichenfolge mit CRT-Unterstützung. |
CString |
Sowohl ANSI- als auch Unicode-Zeichentypen mit CRT-Unterstützung. |
Die folgenden Zeichenfolgentypen sind in Projekten verfügbar, in denen ATL_CSTRING_NO_CRT
definiert ist:
CStringT-Typ | Deklaration |
---|---|
CAtlStringA |
Eine ZEICHENFOLGE des ANSI-Zeichentyps ohne CRT-Unterstützung. |
CAtlStringW |
Eine Unicode-Zeichenfolge ohne CRT-Unterstützung. |
CAtlString |
Sowohl ANSI- als auch Unicode-Zeichentypen ohne CRT-Unterstützung. |
Die folgenden Zeichenfolgentypen sind in Projekten verfügbar, in denen ATL_CSTRING_NO_CRT
nicht definiert ist:
CStringT-Typ | Deklaration |
---|---|
CAtlStringA |
Eine ZEICHENFOLGE vom Typ ANSI mit CRT-Unterstützung. |
CAtlStringW |
Eine Unicode-Zeichenfolge mit CRT-Unterstützung. |
CAtlString |
Sowohl ANSI- als auch Unicode-Zeichentypen mit CRT-Unterstützung. |
CString
-Objekte weisen außerdem die folgenden Merkmale auf:
CStringT
-Objekte können aufgrund von Verkettungsvorgängen vergrößert werden.CStringT
-Objekte folgen der "Wertsemantik". Stellen Sie sich einCStringT
-Objekt als tatsächliche Zeichenfolge vor, nicht als Zeiger auf eine Zeichenfolge.Sie können Objekte frei durch
PCXSTR
Funktionsargumente ersetzenCStringT
.Benutzerdefinierte Speicherverwaltung für Zeichenfolgenpuffer. Weitere Informationen finden Sie unter Speicherverwaltung und
CStringT
.
Vordefinierte CStringT-Typen
Da CStringT
ein Vorlagenargument verwendet, um den unterstützten Zeichentyp (oder wchar_t
char
) zu definieren, können Methodenparametertypen manchmal kompliziert sein. Um dieses Problem zu vereinfachen, wird eine Reihe vordefinierter Typen definiert und in der CStringT
gesamten Klasse verwendet. In der folgenden Tabelle sind die verschiedenen Typen aufgeführt:
Name | BESCHREIBUNG |
---|---|
XCHAR |
Ein einzelnes Zeichen (entweder wchar_t oder char ) mit demselben Zeichentyp wie das CStringT -Objekt. |
YCHAR |
Ein einzelnes Zeichen (entweder wchar_t oder char ) mit dem entgegengesetzten Zeichentyp als CStringT -Objekt. |
PXSTR |
Ein Zeiger auf eine Zeichenfolge (entweder wchar_t oder char ) mit demselben Zeichentyp wie das CStringT -Objekt. |
PYSTR |
Ein Zeiger auf eine Zeichenfolge (entweder wchar_t oder char ) mit dem entgegengesetzten Zeichentyp als CStringT -Objekt. |
PCXSTR |
Ein Zeiger auf eine const Zeichenfolge (entweder wchar_t oder char ) mit demselben Zeichentyp wie das CStringT -Objekt. |
PCYSTR |
Ein Zeiger auf eine const Zeichenfolge (entweder wchar_t oder char ) mit dem entgegengesetzten Zeichentyp als CStringT -Objekt. |
Hinweis
Code, der zuvor nicht dokumentierte Methoden von CString
(z AssignCopy
. B. ) verwendet hat, muss durch Code ersetzt werden, der die folgenden dokumentierten Methoden von CStringT
verwendet (z GetBuffer
. B. oder ReleaseBuffer
). Diese Methoden werden von CSimpleStringT
geerbt.
Vererbungshierarchie
CStringT
Anforderungen
Header | Zweck |
---|---|
cstringt.h |
Nur MFC-Zeichenfolgenobjekte |
atlstr.h |
Nicht-MFC-Zeichenfolgenobjekte |
CStringT::AllocSysString
Ordnet eine Automation-kompatible Zeichenfolge des Typs BSTR
zu und kopiert den Inhalt des CStringT
Objekts in diese, einschließlich des abschließenden NULL-Zeichens.
BSTR AllocSysString() const;
Rückgabewert
Die neu zugeordnete Zeichenfolge.
Hinweise
In MFC-Programmen wird eine CMemoryException
Klasse ausgelöst, wenn nicht genügend Arbeitsspeicher vorhanden ist. In ATL-Programmen wird eine CAtlException
ausgelöst. Diese Funktion wird normalerweise verwendet, um Zeichenfolgen für Automation zurückzugeben.
Wenn diese Zeichenfolge als [in]
Parameter an eine COM-Funktion übergeben wird, erfordert dies in der Regel, dass der Aufrufer die Zeichenfolge frei gibt. Dies kann mithilfe SysFreeString
von erfolgen, wie im Windows SDK beschrieben. Weitere Informationen finden Sie unter Zuordnen und Freigeben von Arbeitsspeicher für eine BSTR
.
Weitere Informationen zu OLE-Zuordnungsfunktionen in Windows finden Sie SysAllocString
im Windows SDK.
Beispiel
Das folgende Beispiel veranschaulicht die Verwendung von 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
Konvertiert alle Zeichen in diesem CStringT
Objekt aus dem ANSI-Zeichensatz in den OEM-Zeichensatz.
void AnsiToOem();
Hinweise
Die Funktion ist nicht verfügbar, wenn _UNICODE
definiert ist.
Beispiel
// OEM character 252 on most IBM-compatible computers in
// Western countries/regions is superscript n, as in 2^n.
// Converting it to the ANSI English charset results in a
// normal character 'n', which is the closest possible
// representation.
CStringT<char, StrTraitATL<char, ChTraitsCRT<char>>> str((WCHAR)252);
str.OemToAnsi();
ASSERT(str[0] == 'n');
// Be aware that in OEM to ANSI conversion the 'n'
// from the previous result cannot be converted back to
// a supsercript n because the system does not know what
// the character's value truly was.
str.AnsiToOem();
ASSERT(str[0] != 252);
ASSERT(str[0] == 'n');
CStringT::AppendFormat
Fügt formatierte Daten an ein vorhandenes CStringT
Objekt an.
void __cdecl AppendFormat(PCXSTR pszFormat, [, argument] ...);
void __cdecl AppendFormat(UINT nFormatID, [, argument] ...);
Parameter
pszFormat
Eine Formatsteuerelementzeichenfolge.
nFormatID
Der Zeichenfolgenressourcenbezeichner, der die Formatsteuerelementzeichenfolge enthält.
argument
Optionale Argumente.
Hinweise
Diese Funktion formatiert und fügt eine Reihe von Zeichen und Werten in der an CStringT
. Jedes optionale Argument (sofern vorhanden) wird gemäß der entsprechenden Formatspezifikation in pszFormat
oder aus der durch nFormatID
identifizierten Zeichenfolgenressource konvertiert und angefügt.
Beispiel
// 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
Vergleicht zwei Zeichenfolgen mithilfe der generischen Textfunktion _tcscoll
.
int Collate(PCXSTR psz) const throw();
Parameter
psz
Die andere Zeichenfolge, die für den Vergleich verwendet wird.
Rückgabewert
Null, wenn die Zeichenfolgen identisch sind, 0, < wenn dieses CStringT
Objekt kleiner als psz
ist, oder > 0, wenn dieses CStringT
Objekt größer als psz
ist.
Hinweise
Die generische Textfunktion _tcscoll
, die in TCHAR.H
definiert ist, wird je nach dem Zeichensatz, der zur Kompilierzeit definiert wird, entweder strcoll
, wcscoll
oder _mbscoll
zugeordnet. Jede Funktion führt einen Vergleich der Zeichenfolgen entsprechend der aktuell verwendeten Codepage durch, bei der die Groß-/Kleinschreibung beachtet wird. Weitere Informationen finden Sie unter strcoll
, wcscoll
, _mbscoll
, _strcoll_l
, _wcscoll_l
_mbscoll_l.
CStringT::CollateNoCase
Vergleicht zwei Zeichenfolgen mithilfe der generischen Textfunktion _tcscoll
.
int CollateNoCase(PCXSTR psz) const throw();
Parameter
psz
Die andere Zeichenfolge, die für den Vergleich verwendet wird.
Rückgabewert
0 (null), wenn die Zeichenfolgen identisch sind (großschreibung wird ignoriert), < 0, wenn dieses CStringT
Objekt kleiner als psz
ist (groß-/großschreibung wird ignoriert) oder > 0, wenn dieses CStringT
Objekt größer als psz
ist (großschreibung wird ignoriert).
Hinweise
Die generische Textfunktion _tcscoll
, die in TCHAR.H
definiert ist, wird je nach dem Zeichensatz, der zur Kompilierzeit definiert wird, entweder stricoll
, wcsicoll
oder _mbsicoll
zugeordnet. Jede Funktion vergleicht die Zeichenfolgen entsprechend der aktuell verwendeten Codepage ohne Unterscheidung nach Groß-/Kleinschreibung. Weitere Informationen finden Sie unter strcoll
, wcscoll
, _mbscoll
, _strcoll_l
, _wcscoll_l
, . _mbscoll_l
Beispiel
// 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
Vergleicht zwei Zeichenfolgen (Groß-/Kleinschreibung wird beachtet).
int Compare(PCXSTR psz) const;
Parameter
psz
Die andere Zeichenfolge, die für den Vergleich verwendet wird.
Rückgabewert
Null, wenn die Zeichenfolgen identisch sind, 0, < wenn dieses CStringT
Objekt kleiner als psz
ist, oder > 0, wenn dieses CStringT
Objekt größer als psz
ist.
Hinweise
Die generische Textfunktion _tcscmp
, die in TCHAR.H
definiert ist, wird je nach dem Zeichensatz, der zur Kompilierzeit definiert wird, entweder strcmp
, wcscmp
oder _mbscmp
zugeordnet. Jede Funktion führt einen Vergleich der Zeichenfolgen durch, bei dem die Groß-/Kleinschreibung beachtet wird, und ist nicht vom Gebietsschema betroffen. Weitere Informationen finden Sie unter strcmp
, wcscmp
, _mbscmp
.
Wenn die Zeichenfolge eingebettete NULL-Werte enthält, wird die Zeichenfolge zu Vergleichszwecken beim ersten eingebetteten NULL-Zeichen als abgeschnitten betrachtet.
Beispiel
Das folgende Beispiel veranschaulicht die Verwendung von 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
Vergleicht zwei Zeichenfolgen (ohne Unterscheidung nach Groß-/Kleinschreibung).
int CompareNoCase(PCXSTR psz) const throw();
Parameter
psz
Die andere Zeichenfolge, die für den Vergleich verwendet wird.
Rückgabewert
0 (null), wenn die Zeichenfolgen identisch sind (großschreibung wird ignoriert), <0, wenn dieses CStringT
Objekt kleiner als psz
ist (groß-/großschreibung wird ignoriert) oder >0, wenn dieses CStringT
Objekt größer als psz
ist (großschreibung wird ignoriert).
Hinweise
Die generische Textfunktion _tcsicmp
, die in TCHAR.H
definiert ist, _stricmp
_wcsicmp
_mbsicmp
wird abhängig vom zeichenbasierten Satz, der zur Kompilierzeit definiert ist, entweder oder zu - oder -Zeichensatz. Jede Funktion führt einen Vergleich der Zeichenfolgen durch, bei dem die Groß-/Kleinschreibung nicht beachtet wird. Der Vergleich hängt vom Aspekt des LC_CTYPE
-Locale ab, aber nicht vom -Aspekt LC_COLLATE
. Weitere Informationen finden Sie unter _stricmp
, _wcsicmp
, _mbsicmp
, _stricmp_l
, _wcsicmp_l
, _mbsicmp_l
.
Beispiel
// 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
Erstellt ein CStringT
-Objekt.
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);
Parameter
pch
Ein Zeiger auf ein Array von Zeichen der Länge nLength
, nicht auf NULL terminiert.
nLength
Die Anzahl der Zeichen in pch
.
ch
Ein einzelnes Zeichen.
pszSrc
Eine auf NULL beendete Zeichenfolge, die in dieses Objekt kopiert werden CStringT
soll.
pStringMgr
Ein Zeiger auf den Speicher-Manager für das CStringT
-Objekt. Weitere Informationen zur - und IAtlStringMgr
-Speicherverwaltung für finden CStringT
Sie unter Speicherverwaltung mit CStringT.
strSrc
Ein vorhandenes CStringT
Objekt, das in dieses Objekt kopiert werden CStringT
soll. Weitere Informationen zu und CThisString
finden CThisSimpleString
Sie im Abschnitt "Hinweise".
varSrc
Ein Variant-Objekt, das in dieses Objekt kopiert werden CStringT
soll.
BaseType
Der Zeichentyp der Zeichenfolgenklasse. Dabei kann es sich um eine der folgenden Methoden handeln:
char
(für ANSI-Zeichenfolgen).
wchar_t
(für Unicode-Zeichenfolgen).
TCHAR
(für ANSI- und Unicode-Zeichenfolgen).
bMFCDLL
Boolescher Wert, der angibt, ob das Projekt eine MFC-DLL (TRUE
) ist oder nicht (FALSE
).
SystemString
Muss sein System::String
, und das Projekt muss mit kompiliert werden /clr
.
pString
Ein Handle für ein CStringT
-Objekt.
Hinweise
Da die Konstruktoren die Eingabedaten in einen neuen zugeordneten Speicher kopieren, können Speicherausnahmen entstehen. Einige dieser Konstruktoren fungieren als Konvertierungsfunktionen. Dadurch können Sie z. B. ein ersetzen, bei LPTSTR
dem ein - CStringT
Objekt erwartet wird.
CStringT
(LPCSTR
lpsz
): Erstellt einen Unicode ausCStringT
einer ANSI-Zeichenfolge. Sie können diesen Konstruktor auch verwenden, um eine Zeichenfolgenressource zu laden, wie im folgenden Beispiel gezeigt.CStringT(
LPCWSTR
lpsz
): Erstellt eine aus einerCStringT
Unicode-Zeichenfolge.CStringT
(const unsigned char*
psz
): Ermöglicht das Erstellen eines ausCStringT
einem Zeiger aufunsigned char
.
Hinweis
Definieren Sie das Makro _CSTRING_DISABLE_NARROW_WIDE_CONVERSION
, um die implizite Zeichenfolgenkonvertierung zwischen ANSI- und Unicode-Zeichenfolgen zu deaktivieren. Das -Makro schließt kompilierungskonstruktoren aus, die die Konvertierung unterstützen.
Der strSrc
-Parameter kann entweder ein - oder ein CStringT
-Objekt CThisSimpleString
sein. Verwenden CStringT
Sie für eine der Standard instanziierungen (CString
, CStringA
oder CStringW
); CThisSimpleString
für , verwenden Sie einen this
-Zeiger. CThisSimpleString
deklariert eine Instanz der -KlasseCSimpleStringT
, bei der es sich um eine kleinere Zeichenfolgenklasse mit weniger integrierten Funktionen als die -Klasse CStringT
handelt.
Der Überladungsoperator CSimpleStringT<>&()
erstellt ein - CStringT
Objekt aus einer CSimpleStringT
Deklaration.
Hinweis
Obwohl es möglich ist, Instanzen zu CStringT
erstellen, die eingebettete NULL-Zeichen enthalten, wird dagegen empfohlen. Das Aufrufen von Methoden und Operatoren CStringT
für Objekte, die eingebettete NULL-Zeichen enthalten, kann zu unbeabsichtigten Ergebnissen führen.
Beispiel
// 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
Zerstört das CStringT
-Objekt.
~CStringT() throw();
Hinweise
Zerstört das CStringT
-Objekt.
CStringT::Delete
Löscht ein oder mehrere Zeichen aus einer Zeichenfolge, beginnend mit dem Zeichen am angegebenen Index.
int Delete(int iIndex, int nCount = 1);
Parameter
iIndex
Der nullbasierte Index des ersten Zeichens im zu löschenden CStringT
Objekt.
nCount
Die Anzahl der zu entfernenden Zeichen.
Rückgabewert
Die Länge der geänderten Zeichenfolge.
Hinweise
Wenn nCount
länger als die Zeichenfolge ist, wird der Rest der Zeichenfolge entfernt.
Beispiel
// 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
Durchsucht diese Zeichenfolge nach der ersten Übereinstimmung eines Zeichens oder einer Teilzeichenfolge.
int Find(PCXSTR pszSub, int iStart=0) const throw();
int Find(XCHAR ch, int iStart=0) const throw();
Parameter
pszSub
Eine zu suchende Teilzeichenfolge.
iStart
Der Index des Zeichens in der Zeichenfolge, mit dem die Suche beginnen soll, oder 0, um von Anfang an zu beginnen.
ch
Ein einzelnes Zeichen, nach dem gesucht werden soll.
Rückgabewert
Der nullbasierte Index des ersten Zeichens in CStringT
diesem Objekt, das der angeforderten Teilzeichenfolge oder den angeforderten Zeichen entspricht; -1, wenn die Teilzeichenfolge oder das Zeichen nicht gefunden wird.
Hinweise
Die -Funktion wird überladen, um sowohl einzelne Zeichen ( strchr
ähnlich der Laufzeitfunktion ) als auch Zeichenfolgen (ähnlich wie ) zu akzeptieren strstr
.
Beispiel
// 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
Durchsucht diese Zeichenfolge nach dem ersten Zeichen, das einem beliebigen in enthaltenen Zeichen entspricht pszCharSet
.
int FindOneOf(PCXSTR pszCharSet) const throw();
Parameter
pszCharSet
Eine Zeichenfolge, die Zeichen für den Abgleich enthält.
Rückgabewert
Der nullbasierte Index des ersten Zeichens in dieser Zeichenfolge, das sich ebenfalls in pszCharSet
befindet; -1, wenn keine Übereinstimmung vorgibt.
Hinweise
Sucht das erste Vorkommen eines der Zeichen in pszCharSet
.
Beispiel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.FindOneOf(_T("xd")) == 3); // 'd' is first match
CStringT::Format
Schreibt formatierte Daten auf die gleiche Weise in ein CStringT
, das sprintf_s
Daten in ein Zeichenarray im C-Stil formatiert.
void __cdecl Format(UINT nFormatID, [, argument]...);
void __cdecl Format(PCXSTR pszFormat, [, argument] ...);
Parameter
nFormatID
Der Zeichenfolgenressourcenbezeichner, der die Formatsteuerzeichenfolge enthält.
pszFormat
Eine Formatsteuerzeichenfolge.
argument
Optionale Argumente.
Hinweise
Diese Funktion formatiert und speichert eine Reihe von Zeichen und Werten im CStringT
. Jedes optionale Argument (sofern verfügbar) wird gemäß der entsprechenden Formatspezifikation in pszFormat
oder aus der durch identifizierten Zeichenfolgenressource konvertiert und ausgegeben nFormatID
.
Der Aufruf ist nicht möglich, wenn das Zeichenfolgenobjekt selbst als Parameter für angeboten wird Format
. Der folgende Code führt beispielsweise zu unvorhersehbaren Ergebnissen:
CAtlString str = _T("Some Data");
str.Format(_T("%s%d"), str, 123);
// Attention: str is also used in the parameter list.
Weitere Informationen finden Sie unter Syntax der Formatspezifikation: printf
und wprintf
Funktionen.
Beispiel
// 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
Formatiert eine Meldungszeichenfolge.
void __cdecl FormatMessage(UINT nFormatID, [, argument]...);
void __cdecl FormatMessage(PCXSTR pszFormat, [, argument]...);
Parameter
nFormatID
Der Zeichenfolgenressourcenbezeichner, der den unformatierten Meldungstext enthält.
pszFormat
Zeigt auf die Formatsteuerzeichenfolge. Es wird auf Einfügungen überprüft und entsprechend formatiert. Die Formatzeichenfolge ähnelt Formatzeichenfolgen printf
im Laufzeitfunktionsformat, mit der Ausnahme, dass die Parameter in beliebiger Reihenfolge eingefügt werden können.
argument
Optionale Argumente.
Hinweise
Die Funktion erfordert eine Nachrichtendefinition als Eingabe. Die Nachrichtendefinition wird durch oder von pszFormat
der Zeichenfolgenressource bestimmt, die durch identifiziert wird nFormatID
. Die Funktion kopiert den formatierten Meldungstext in das -Objekt CStringT
und verarbeitet bei Anfrage eingebettete Einfügesequenzen.
Hinweis
FormatMessage
versucht, Systemspeicher für die neu formatierte Zeichenfolge zu reservieren. Wenn dieser Versuch fehlschlägt, wird automatisch eine Speicherausnahme ausgelöst.
Jede Einfügung muss einen entsprechenden Parameter nach dem -Parameter oder dem pszFormat
-Parameter nFormatID
haben. Innerhalb des Nachrichtentexts werden mehrere Escapesequenzen unterstützt, um die Nachricht dynamisch zu formatieren. Weitere Informationen finden Sie in der Windows-Funktion FormatMessage
im Windows SDK.
Beispiel
// 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
Formatiert eine Nachrichtenzeichenfolge mithilfe einer Variablenargumentliste.
void FormatMessageV(PCXSTR pszFormat, va_list* pArgList);
Parameter
pszFormat
Zeigt auf die Formatsteuerelementzeichenfolge. Sie wird auf Einfügungen überprüft und entsprechend formatiert. Die Formatzeichenfolge ähnelt Formatzeichenfolgen der Laufzeitfunktion printf
im Format , mit der Ausnahme, dass die Parameter in einer beliebigen Reihenfolge eingefügt werden können.
pArgList
Zeiger auf eine Liste von Argumenten.
Hinweise
Die Funktion erfordert eine Nachrichtendefinition als Eingabe, die durch bestimmt wird pszFormat
. Die Funktion kopiert den formatierten Nachrichtentext und eine Variablenliste von Argumenten in das CStringT
-Objekt und verarbeitet ggf. eingebettete Einfügesequenzen.
Hinweis
FormatMessageV
ruft auf CStringT::FormatMessage
, wodurch versucht wird, Systemspeicher für die neu formatierte Zeichenfolge zuzuordnen. Wenn dieser Versuch fehlschlägt, wird automatisch eine Speicherausnahme ausgelöst.
Weitere Informationen finden Sie in der Windows-Funktion FormatMessage
im Windows SDK.
CStringT::FormatV
Formatiert eine Nachrichtenzeichenfolge mithilfe einer Variablenargumentliste.
void FormatV(PCXSTR pszFormat, va_list args);
Parameter
pszFormat
Zeigt auf die Formatsteuerelementzeichenfolge. Sie wird auf Einfügungen überprüft und entsprechend formatiert. Die Formatzeichenfolge ähnelt Formatzeichenfolgen der Laufzeitfunktion printf
im Format , mit der Ausnahme, dass die Parameter in einer beliebigen Reihenfolge eingefügt werden können.
args
Zeiger auf eine Liste von Argumenten.
Hinweise
Schreibt eine formatierte Zeichenfolge und eine Variablenliste von Argumenten auf die gleiche Weise in eine CStringT
Zeichenfolge, die vsprintf_s
Daten in ein Zeichenarray im C-Stil formatiert.
Beispiel
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
Legt die Zeichenfolge auf den Wert der angegebenen Umgebungsvariablen fest.
BOOL GetEnvironmentVariable(PCXSTR pszVar);
Parameter
pszVar
Zeiger auf eine auf NULL endende Zeichenfolge, die die Umgebungsvariable angibt.
Rückgabewert
Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).
Hinweise
Ruft den Wert der angegebenen Variablen aus dem Umgebungsblock des aufrufenden Prozesses ab. Der Wert hat die Form einer auf NULL endenden Zeichenfolge von Zeichen.
Beispiel
// 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
Fügt ein einzelnes Zeichen oder eine Teilzeichenfolge am angegebenen Index innerhalb der Zeichenfolge ein.
int Insert(int iIndex, PCXSTR psz);
int Insert(int iIndex, XCHAR ch);
Parameter
iIndex
Der Index des Zeichens, vor dem die Einfügung erfolgt.
psz
Ein Zeiger auf die einzufügende Teilzeichenfolge.
ch
Das einzufügende Zeichen.
Rückgabewert
Die Länge der geänderten Zeichenfolge.
Hinweise
Der iIndex
-Parameter identifiziert das erste Zeichen, das verschoben wird, um Platz für das Zeichen oder die Teilzeichenfolge zu schaffen. Wenn nIndex
0 (null) ist, erfolgt die Einfügung vor der gesamten Zeichenfolge. Wenn nIndex höher als die Länge der Zeichenfolge ist, verkettet die Funktion die aktuelle Zeichenfolge und das neue Material, das von oder ch
psz
bereitgestellt wird.
Beispiel
// 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
Extrahiert die am weitesten nCount
links liegenden Zeichen aus diesem CStringT
Objekt und gibt eine Kopie der extrahierten Teilzeichenfolge zurück.
CStringT Left(int nCount) const;
Parameter
nCount
Die Anzahl der aus diesem CStringT
-Objekt zu extrahierenden Zeichen.
Rückgabewert
Ein CStringT
-Objekt, das eine Kopie des angegebenen Zeichenbereichs enthält. Das zurückgegebene CStringT
-Objekt ist ggf. leer.
Hinweise
Wenn nCount
die Zeichenfolgenlänge überschreitet, wird die gesamte Zeichenfolge extrahiert. Left
ähnelt der Left
-Funktion von ///Visual Basic.
Behandelt für Multibyte-Zeichensätze (MBCS) nCount
jede 8-Bit-Sequenz als Zeichen, sodass nCount
die Anzahl von Multibytezeichen multipliziert mit zwei zurückgibt.
Beispiel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Left(2) == _T("ab"));
CStringT::LoadString
Liest eine durch nID identifizierte Windows Zeichenfolgenressource in ein vorhandenes CStringT
Objekt.
BOOL LoadString(HINSTANCE hInstance, UINT nID, WORD wLanguageID);
BOOL LoadString(HINSTANCE hInstance, UINT nID);
BOOL LoadString(UINT nID);
Parameter
hInstance
Ein Handle für die Instanz des Moduls.
nID
Eine Windows Zeichenfolgenressourcen-ID.
wLanguageID
Die Sprache der Zeichenfolgenressource.
Rückgabewert
Ungleich 0 (null), wenn das Laden der Ressource erfolgreich war; andernfalls 0.
Hinweise
Lädt die Zeichenfolgenressource (nID
) aus dem angegebenen Modul (hInstance
) mit der angegebenen Sprache (wLanguage
).
Beispiel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s;
s.LoadString(IDS_APP_TITLE);
CStringT::MakeLower
Konvertiert das CStringT
-Objekt in eine Zeichenfolge in Kleinbuchstaben.
CStringT& MakeLower();
Rückgabewert
Die resultierende Zeichenfolge in Kleinbuchstaben.
Beispiel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("ABC"));
ASSERT(s.MakeLower() == _T("abc"));
CStringT::MakeReverse
Kehrt die Reihenfolge der Zeichen im -Objekt um CStringT
.
CStringT& MakeReverse();
Rückgabewert
Die resultierende umgekehrte Zeichenfolge.
Beispiel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abc"));
ASSERT(s.MakeReverse() == _T("cba"));
CStringT::MakeUpper
Konvertiert das CStringT
-Objekt in eine Zeichenfolge in Großbuchstaben.
CStringT& MakeUpper();
Rückgabewert
Die resultierende Zeichenfolge in Großbuchstaben.
Bemerkungen
Beispiel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abc"));
ASSERT(s.MakeUpper() == _T("ABC"));
CStringT::Mid
Extrahiert eine Teilzeichenfolge von Längenzeichen nCount
aus diesem CStringT
Objekt, beginnend an der Position iFirst
(nullbasiert).
CStringT Mid(int iFirst, int nCount) const;
CStringT Mid(int iFirst) const;
Parameter
iFirst
Der nullbasierte Index des ersten Zeichens in diesem CStringT
Objekt, das in die extrahierte Teilzeichenfolge eingeschlossen werden soll.
nCount
Die Anzahl der aus diesem CStringT
-Objekt zu extrahierenden Zeichen. Wenn dieser Parameter nicht angegeben wird, wird der Rest der Zeichenfolge extrahiert.
Rückgabewert
Ein CStringT
-Objekt, das eine Kopie des angegebenen Zeichenbereichs enthält. Das zurückgegebene CStringT
-Objekt ist ggf. leer.
Hinweise
Die Funktion gibt eine Kopie der extrahierten Teilzeichenfolge zurück. Mid
ähnelt der Basic Mid-Funktion (mit der Ausnahme, dass Indizes in Basic einsbasiert sind).
Für Multibyte-Zeichensätze (MBCS) nCount
bezieht sich auf jedes 8-Bit-Zeichen, d. h., ein Lead- und ein nachfolgendes Byte in einem Multibytezeichen werden als zwei Zeichen gezählt.
Beispiel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Mid(2, 3) == _T("cde"));
CStringT::OemToAnsi
Konvertiert alle Zeichen in diesem CStringT
Objekt aus dem OEM-Zeichensatz in den ANSI-Zeichensatz.
void OemToAnsi();
Hinweise
Diese Funktion ist nicht verfügbar, wenn _UNICODE
definiert ist.
Beispiel
Weitere Informationen finden Sie im Beispiel für CStringT::AnsiToOem
.
CStringT::operator =
Weist der Zeichenfolge einen neuen Wert zu.
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);
Parameter
strSrc
Ein , CStringT
der dieser Zeichenfolge zugewiesen werden soll.
str
Ein Verweis auf ein CThisSimpleString
-Objekt.
bMFCDLL
Ein boolescher Wert, der an gibt, ob das Projekt eine MFC-DLL ist oder nicht.
BaseType
Der Zeichenfolgenbasistyp.
var
Ein Variant-Objekt, das dieser Zeichenfolge zugewiesen werden soll.
ch
Ein ANSI- oder Unicode-Zeichen, das der Zeichenfolge zugewiesen werden soll.
pszSrc
Ein Zeiger auf die ursprüngliche Zeichenfolge, die zugewiesen wird.
Hinweise
Der Zuweisungsoperator akzeptiert ein anderes Objekt CStringT
, einen Zeichenzeiger oder ein einzelnes Zeichen. Speicherausnahmen können immer auftreten, wenn Sie diesen Operator verwenden, da neuer Speicher zugeordnet werden kann.
Informationen zu finden CThisSimpleString
Sie im Abschnitt "Hinweise" von CStringT::CStringT
.
Hinweis
Obwohl es möglich ist, Instanzen zu CStringT
erstellen, die eingebettete NULL-Zeichen enthalten, wird dagegen empfohlen. Das Aufrufen von Methoden und Operatoren CStringT
für Objekte, die eingebettete NULL-Zeichen enthalten, kann zu unbeabsichtigten Ergebnissen führen.
CStringT::operator +
Verkettet zwei Zeichenfolgen oder ein Zeichen und eine Zeichenfolge.
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,);
Parameter
ch1
Ein ANSI- oder Unicode-Zeichen, das mit einer Zeichenfolge verkettet werden soll.
ch2
Ein ANSI- oder Unicode-Zeichen, das mit einer Zeichenfolge verkettet werden soll.
str1
Ein , CStringT
das mit einer Zeichenfolge oder einem Zeichen verkettet werden soll.
str2
Ein , CStringT
das mit einer Zeichenfolge oder einem Zeichen verkettet werden soll.
psz1
Ein Zeiger auf eine auf NULL beendete Zeichenfolge, die mit einer Zeichenfolge oder einem Zeichen verkettet werden soll.
psz2
Ein Zeiger auf eine Zeichenfolge, die mit einer Zeichenfolge oder einem Zeichen verkettet werden soll.
Hinweise
Es gibt sieben Überladungsformen der CStringT::operator+
Funktion. Die erste Version verkettet zwei vorhandene CStringT
Objekte. Die nächsten beiden verketten ein -Objekt und CStringT
eine auf NULL beendete Zeichenfolge. Die nächsten beiden verketten ein -Objekt CStringT
und ein ANSI-Zeichen. Die letzten beiden verketten ein -Objekt CStringT
und ein Unicode-Zeichen.
Hinweis
Obwohl es möglich ist, Instanzen zu CStringT
erstellen, die eingebettete NULL-Zeichen enthalten, wird dagegen empfohlen. Das Aufrufen von Methoden und Operatoren CStringT
für Objekte, die eingebettete NULL-Zeichen enthalten, kann zu unbeabsichtigten Ergebnissen führen.
Beispiel
// 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 +=
Verkettet Zeichen am Ende der Zeichenfolge.
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);
Parameter
str
Ein Verweis auf ein CThisSimpleString
-Objekt.
bMFCDLL
Ein boolescher Wert, der an gibt, ob das Projekt eine MFC-DLL ist oder nicht.
BaseType
Der Zeichenfolgenbasistyp.
var
Ein Variant-Objekt, das mit dieser Zeichenfolge verkettet werden soll.
ch
Ein ANSI- oder Unicode-Zeichen, das mit einer Zeichenfolge verkettet werden soll.
pszSrc
Ein Zeiger auf die ursprüngliche Zeichenfolge, die verkettet wird.
strSrc
Ein , CStringT
das mit dieser Zeichenfolge verkettet werden soll.
Hinweise
Der -Operator akzeptiert ein anderes Objekt CStringT
, einen Zeichenzeiger oder ein einzelnes Zeichen. Speicherausnahmen können auftreten, wenn Sie diesen Verkettungsoperator verwenden, da für zeichen, die diesem Objekt hinzugefügt werden, neuer Speicher zugeordnet werden CStringT
kann.
Informationen zu finden CThisSimpleString
Sie im Abschnitt "Hinweise" von CStringT::CStringT
.
Hinweis
Obwohl es möglich ist, Instanzen zu CStringT
erstellen, die eingebettete NULL-Zeichen enthalten, wird dagegen empfohlen. Das Aufrufen von Methoden und Operatoren CStringT
für Objekte, die eingebettete NULL-Zeichen enthalten, kann zu unbeabsichtigten Ergebnissen führen.
Beispiel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abc"));
ASSERT((s += _T("def")) == _T("abcdef"));
CStringT::operator ==
Bestimmt, ob zwei Zeichenfolgen logisch gleich sind.
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();
Parameter
ch1
Ein ANSI- oder Unicode-Zeichen für den Vergleich.
ch2
Ein ANSI- oder Unicode-Zeichen für den Vergleich.
str1
Ein zum CStringT
Vergleich.
str2
Ein zum CStringT
Vergleich.
psz1
Ein Zeiger auf eine auf NULL beendete Zeichenfolge für den Vergleich.
psz2
Ein Zeiger auf eine auf NULL beendete Zeichenfolge für den Vergleich.
Hinweise
Testet, ob eine Zeichenfolge oder ein Zeichen auf der linken Seite gleich einer Zeichenfolge oder einem Zeichen auf der rechten Seite ist, und gibt oder TRUE
entsprechend FALSE
zurück.
Beispiel
// 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 !=
Bestimmt, ob zwei Zeichenfolgen logisch nicht gleich sind.
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();
Parameter
ch1
Ein ANSI- oder Unicode-Zeichen, das mit einer Zeichenfolge verkettet werden soll.
ch2
Ein ANSI- oder Unicode-Zeichen, das mit einer Zeichenfolge verkettet werden soll.
str1
Ein zum CStringT
Vergleich.
str2
Ein zum CStringT
Vergleich.
psz1
Ein Zeiger auf eine auf NULL beendete Zeichenfolge für den Vergleich.
psz2
Ein Zeiger auf eine auf NULL beendete Zeichenfolge für den Vergleich.
Hinweise
Testet, ob eine Zeichenfolge oder ein Zeichen auf der linken Seite nicht gleich einer Zeichenfolge oder einem Zeichen auf der rechten Seite ist.
Beispiel
// 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 <
Bestimmt, ob die Zeichenfolge links vom Operator kleiner als die Zeichenfolge auf der rechten Seite ist.
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();
Parameter
str1
Ein zum CStringT
Vergleich.
str2
Ein zum CStringT
Vergleich.
psz1
Ein Zeiger auf eine auf NULL beendete Zeichenfolge für den Vergleich.
psz2
Ein Zeiger auf eine auf NULL beendete Zeichenfolge für den Vergleich.
Hinweise
Ein lexikografischer Vergleich zwischen Zeichenfolgen, Zeichen für Zeichen bis:
Er zwei korrespondierende ungleiche Zeichen findet, und deren Vergleich als Ergebnis des Vergleichs zweier Zeichenfolgen genommen wird.
Er keine Ungleichheiten findet, aber eine Zeichenfolge mehr Zeichen hat als die andere und die kürzere Zeichenfolge als kleiner als die längere Zeichenfolge betrachtet wird.
Er keine Ungleichheiten findet und feststellt, dass die Zeichenfolgen die gleiche Anzahl von Zeichen haben und daher gleich sind.
Beispiel
// 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 >
Bestimmt, ob die Zeichenfolge links vom Operator größer als die Zeichenfolge auf der rechten Seite ist.
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();
Parameter
str1
Ein zum CStringT
Vergleich.
str2
Ein zum CStringT
Vergleich.
psz1
Ein Zeiger auf eine auf NULL beendete Zeichenfolge für den Vergleich.
psz2
Ein Zeiger auf eine auf NULL beendete Zeichenfolge für den Vergleich.
Hinweise
Ein lexikografischer Vergleich zwischen Zeichenfolgen, Zeichen für Zeichen bis:
Er zwei korrespondierende ungleiche Zeichen findet, und deren Vergleich als Ergebnis des Vergleichs zweier Zeichenfolgen genommen wird.
Er keine Ungleichheiten findet, aber eine Zeichenfolge mehr Zeichen hat als die andere und die kürzere Zeichenfolge als kleiner als die längere Zeichenfolge betrachtet wird.
Er keine Ungleichheiten findet und feststellt, dass die Zeichenfolgen die gleiche Anzahl von Zeichen haben und daher gleich sind.
Beispiel
// 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 <=
Bestimmt, ob die Zeichenfolge links vom Operator kleiner oder gleich der Zeichenfolge rechts vom Operator ist.
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();
Parameter
str1
Ein zum CStringT
Vergleich.
str2
Ein zum CStringT
Vergleich.
psz1
Ein Zeiger auf eine auf NULL beendete Zeichenfolge für den Vergleich.
psz2
Ein Zeiger auf eine auf NULL endende Zeichenfolge für den Vergleich.
Hinweise
Ein lexikografischer Vergleich zwischen Zeichenfolgen, Zeichen für Zeichen bis:
Er zwei korrespondierende ungleiche Zeichen findet, und deren Vergleich als Ergebnis des Vergleichs zweier Zeichenfolgen genommen wird.
Er keine Ungleichheiten findet, aber eine Zeichenfolge mehr Zeichen hat als die andere und die kürzere Zeichenfolge als kleiner als die längere Zeichenfolge betrachtet wird.
Er keine Ungleichheiten findet und feststellt, dass die Zeichenfolgen die gleiche Anzahl von Zeichen haben und daher gleich sind.
Beispiel
// 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 >=
Bestimmt, ob die Zeichenfolge links vom Operator größer oder gleich der Zeichenfolge rechts vom Operator ist.
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();
Parameter
str1
Ein CStringT
für den Vergleich.
str2
Ein CStringT
für den Vergleich.
psz1
Ein Zeiger auf eine Zeichenfolge zum Vergleich.
psz2
Ein Zeiger auf eine Zeichenfolge zum Vergleich.
Hinweise
Ein lexikografischer Vergleich zwischen Zeichenfolgen, Zeichen für Zeichen bis:
Er zwei korrespondierende ungleiche Zeichen findet, und deren Vergleich als Ergebnis des Vergleichs zweier Zeichenfolgen genommen wird.
Er keine Ungleichheiten findet, aber eine Zeichenfolge mehr Zeichen hat als die andere und die kürzere Zeichenfolge als kleiner als die längere Zeichenfolge betrachtet wird.
Er keine Ungleichheiten findet und feststellt, dass die Zeichenfolgen die gleiche Anzahl von Zeichen haben und daher gleich sind.
Beispiel
// 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
Entfernt alle Instanzen des angegebenen Zeichens aus der Zeichenfolge.
int Remove(XCHAR chRemove);
Parameter
chRemove
Das Zeichen, das aus einer Zeichenfolge entfernt werden soll.
Rückgabewert
Die Anzahl der aus der Zeichenfolge entfernten Zeichen. 0 (null), wenn die Zeichenfolge nicht geändert wird.
Hinweise
Bei Vergleichen für das Zeichen wird die Groß-/Kleinschreibung beachtet.
Beispiel
// 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
Es gibt zwei Versionen von Replace
. Die erste Version ersetzt eine oder mehrere Kopien einer Teilzeichenfolge durch eine andere Teilzeichenfolge. Beide Teilzeichenfolgen sind NULL-terminiert. Die zweite Version ersetzt eine oder mehrere Kopien eines Zeichens durch ein anderes Zeichen. Beide Versionen arbeiten mit den in CStringT
gespeicherten Zeichendaten.
int Replace(PCXSTR pszOld, PCXSTR pszNew);
int Replace(XCHAR chOld, XCHAR chNew);
Parameter
pszOld
Ein Zeiger auf eine auf NULL endende Zeichenfolge, die durch pszNew
ersetzt werden soll.
pszNew
Ein Zeiger auf eine auf NULL endende Zeichenfolge, die ersetzt pszOld
.
chOld
Das Zeichen, das durch chNew
ersetzt werden soll.
chNew
Das Zeichen, das ersetzt chOld
.
Rückgabewert
Gibt die Anzahl der ersetzten Instanzen des Zeichens oder der Teilzeichenfolge oder 0 (null) zurück, wenn die Zeichenfolge nicht geändert wird.
Hinweise
Replace
kann die Zeichenfolgenlänge ändern, da pszNew
und pszOld
nicht dieselbe Länge aufweisen müssen und mehrere Kopien der alten Teilzeichenfolge in die neue geändert werden können. Die Funktion führt eine Übereinstimmung aus, bei der die Groß-/Kleinschreibung beachtet wird.
Beispiele für CStringT
Instanzen sind CString
, CStringA
und CStringW
.
Replace
Für CStringA
kann mit ANSI- oder Multibytezeichen (MBCS) verwendet werden. Replace
Für CStringW
funktioniert mit Breitzeichen.
Für CString
wird der Zeichendatentyp zur Kompilierzeit ausgewählt, je nachdem, ob die Konstanten in der folgenden Tabelle definiert sind.
Definierte Konstante | Zeichendatentyp |
---|---|
_UNICODE |
Breitzeichen |
_MBCS |
Multi-Byte-Zeichen |
Neither | Einzel bytezeichen |
Beide | Nicht definiert |
Beispiel
// 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
Durchsucht dieses CStringT
Objekt nach der letzten Übereinstimmung eines Zeichens.
int ReverseFind(XCHAR ch) const throw();
Parameter
ch
Das zu suchende Zeichen.
Rückgabewert
Der nullbasierte Index des letzten Zeichens in diesem CStringT
Objekt, das mit dem angeforderten Zeichen übereinstimmt, oder -1, wenn das Zeichen nicht gefunden wird.
Hinweise
Die Funktion ähnelt der Laufzeitfunktion strrchr
.
Beispiel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcabc"));
ASSERT(s.ReverseFind(_T('b')) == 4);
CStringT::Right
Extrahiert die letzten (ganz rechts) nCount
Zeichen aus diesem CStringT
Objekt und gibt eine Kopie der extrahierten Teilzeichenfolge zurück.
CStringT Right(int nCount) const;
Parameter
nCount
Die Anzahl der aus diesem CStringT
-Objekt zu extrahierenden Zeichen.
Rückgabewert
Ein CStringT
-Objekt, das eine Kopie des angegebenen Zeichenbereichs enthält. Das zurückgegebene CStringT
Objekt kann leer sein.
Hinweise
Wenn nCount
die Zeichenfolgenlänge überschreitet, wird die gesamte Zeichenfolge extrahiert. Right
ähnelt der Basic-Funktion Right
(mit der Ausnahme, dass Indizes in Basic nullbasiert sind).
Bei Multibyte-Zeichensätzen (MBCS
) nCount
bezieht sich auf jedes 8-Bit-Zeichen, d. h., ein Lead- und ein nachfolgendes Byte in einem Multibytezeichen werden als zwei Zeichen gezählt.
Beispiel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Right(2) == _T("ef"));
CStringT::SetSysString
Weist den neu zu, auf den BSTR
von gezeigt wird pbstr
, und kopiert den Inhalt des CStringT
Objekts einschließlich des NULL
Zeichens hinein.
BSTR SetSysString(BSTR* pbstr) const;
Parameter
pbstr
Ein Zeiger auf eine Zeichenfolge.
Rückgabewert
Die neue Zeichenfolge.
Hinweise
Abhängig vom Inhalt des CStringT
-Objekts kann sich der Wert der ändern, auf die BSTR
von verwiesen wird pbstr
. Die Funktion löst eine CMemoryException
aus, wenn nicht genügend Arbeitsspeicher vorhanden ist.
Diese Funktion wird normalerweise verwendet, um den Wert von Zeichenfolgen zu ändern, die als Verweis für Automation übergeben werden.
Beispiel
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
Extrahiert Zeichen aus der Zeichenfolge, beginnend mit dem ersten Zeichen, die sich nicht in dem durch pszCharSet
identifizierten Zeichensatz befinden.
CStringT SpanExcluding(PCXSTR pszCharSet) const;
Parameter
pszCharSet
Eine Zeichenfolge, die als Zeichensatz interpretiert wird.
Rückgabewert
Eine Teilzeichenfolge, die Zeichen in der Zeichenfolge enthält, die sich nicht in pszCharSet
befinden, beginnend mit dem ersten Zeichen in der Zeichenfolge und mit dem ersten Zeichen in der Zeichenfolge enden, das sich ebenfalls in pszCharSet
befindet (d.amp;quot;, beginnend mit dem ersten Zeichen in der Zeichenfolge und bis zum Ausschließen des ersten Zeichens in der gefundenen pszCharSet
Zeichenfolge). Sie gibt die gesamte Zeichenfolge zurück, wenn kein Zeichen in pszCharSet
in der Zeichenfolge gefunden wird.
Hinweise
SpanExcluding
extrahiert und gibt alle Zeichen vor dem ersten Vorkommen eines Zeichens aus pszCharSet
zurück (d. h. das Zeichen von pszCharSet
und alle Zeichen, die in der Zeichenfolge darauf folgen, werden nicht zurückgegeben). Wenn in der Zeichenfolge kein Zeichen von pszCharSet
gefunden wird, SpanExcluding
wird die gesamte Zeichenfolge zurückgegeben.
Beispiel
// 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
Extrahiert Zeichen aus der Zeichenfolge, beginnend mit dem ersten Zeichen, die sich in dem durch pszCharSet
identifizierten Zeichensatz befinden.
CStringT SpanIncluding(PCXSTR pszCharSet) const;
Parameter
pszCharSet
Eine Zeichenfolge, die als Zeichensatz interpretiert wird.
Rückgabewert
Eine Teilzeichenfolge, die Zeichen in der Zeichenfolge enthält, die sich in pszCharSet
befinden, beginnend mit dem ersten Zeichen in der Zeichenfolge und enden, wenn ein Zeichen in der Zeichenfolge gefunden wird, die sich nicht in pszCharSet
befindet. SpanIncluding
gibt eine leere Teilzeichenfolge zurück, wenn sich das erste Zeichen in der Zeichenfolge nicht im angegebenen Satz befindet.
Hinweise
Wenn das erste Zeichen der Zeichenfolge nicht im Zeichensatz enthalten ist, SpanIncluding
gibt eine leere Zeichenfolge zurück. Andernfalls wird eine Sequenz von aufeinander folgenden Zeichen zurückgegeben, die sich in der Gruppe befinden.
Beispiel
// 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
Sucht das nächste Token in einer Zielzeichenfolge.
CStringT Tokenize(PCXSTR pszTokens, int& iStart) const;
Parameter
pszTokens
Eine Zeichenfolge, die Tokentrennzeichen enthält. Die Reihenfolge dieser Trennzeichen ist nicht wichtig.
iStart
Der nullbasierte Index, mit dem die Suche begonnen werden soll.
Rückgabewert
Ein - CStringT
Objekt, das den aktuellen Tokenwert enthält.
Hinweise
Die Tokenize
Funktion sucht das nächste Token in der Zielzeichenfolge. Der Zeichensatz in gibt pszTokens
mögliche Trennzeichen des zu findenden Tokens an. Bei jedem Tokenize
iStart
Aufruf der Funktion beginnt bei , überspringt führende Trennzeichen und gibt ein -Objekt zurück, CStringT
das das aktuelle Token enthält, bei dem es sich um die Zeichenfolge bis zum nächsten Trennzeichen handelt. Der Wert von iStart
wird aktualisiert, um die Position nach dem Endtrennzeichen zu sein, oder -1, wenn das Ende der Zeichenfolge erreicht wurde. Weitere Token können aus Tokenize
dem Rest der Zielzeichenfolge durch eine Reihe von Aufrufen von unterbrochen werden. Verwenden Sie , iStart
um nachzugeben, wo in der Zeichenfolge das nächste Token gelesen werden soll. Wenn keine Token mehr enthalten sind, gibt die Funktion eine leere Zeichenfolge zurück und iStart
wird auf -1 festgelegt.
Im Gegensatz zu den CRT-Tokenisierungsfunktionen strtok_s
wie , _strtok_s_l
, wcstok_s
, _wcstok_s_l
, _mbstok_s
, _mbstok_s_l
wird Tokenize
die Zielzeichenfolge nicht geändert.
Beispiel
// 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);
};
Die Ausgabe dieses Beispiels lautet wie folgt:
Resulting Token: First
Resulting Token: Second
Resulting Token: Third
CStringT::Trim
Entfernt führende und nachrangende Zeichen aus der Zeichenfolge.
CStringT& Trim(XCHAR chTarget);
CStringT& Trim(PCXSTR pszTargets);
CStringT& Trim();
Parameter
chTarget
Das zu kürzende Zielzeichen.
pszTargets
Ein Zeiger auf eine Zeichenfolge, die die zu kürzenden Zielzeichen enthält. Alle führenden und nachkommaenden Vorkommen von Zeichen in pszTargets
werden aus dem -Objekt entfernt CStringT
.
Rückgabewert
Gibt die gekürzte Zeichenfolge zurück.
Hinweise
Entfernt alle führenden und nachfolgenden Vorkommen eines der folgenden:
Das von angegebene Zeichen
chTarget
.Alle Zeichen, die in der durch angegebenen Zeichenfolge gefunden werden
pszTargets
.Leerzeichen.
Beispiel
// 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
Die Ausgabe dieses Beispiels lautet wie folgt:
Before: "******Soccer is best, but liquor is quicker!!!!!"
After : "Soccer is best, but liquor is quicker"
CStringT::TrimLeft
Entfernt führende Zeichen aus der Zeichenfolge.
CStringT& TrimLeft(XCHAR chTarget);
CStringT& TrimLeft(PCXSTR pszTargets);
CStringT& TrimLeft();
Parameter
chTarget
Das zu kürzende Zielzeichen.
pszTargets
Ein Zeiger auf eine Zeichenfolge, die die zu kürzenden Zielzeichen enthält. Alle führenden Vorkommen von Zeichen in pszTargets
werden aus dem -Objekt CStringT
entfernt.
Rückgabewert
Die resultierende gekürzte Zeichenfolge.
Hinweise
Entfernt alle führenden und nachfolgenden Vorkommen eines der folgenden:
Das von angegebene Zeichen
chTarget
.Alle Zeichen, die in der durch angegebenen Zeichenfolge gefunden werden
pszTargets
.Leerzeichen.
Beispiel
// 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
Entfernt nachrangende Zeichen aus der Zeichenfolge.
CStringT& TrimRight(XCHAR chTarget);
CStringT& TrimRight(PCXSTR pszTargets);
CStringT& TrimRight();
Parameter
chTarget
Das zu kürzende Zielzeichen.
pszTargets
Ein Zeiger auf eine Zeichenfolge, die die zu kürzenden Zielzeichen enthält. Alle nachkommaenden Vorkommen von Zeichen in pszTargets
werden aus dem -Objekt CStringT
entfernt.
Rückgabewert
Gibt das - CStringT
Objekt zurück, das die gekürzte Zeichenfolge enthält.
Hinweise
Entfernt nachfolgende Vorkommen einer der folgenden:
Das von angegebene Zeichen
chTarget
.Alle Zeichen, die in der durch angegebenen Zeichenfolge gefunden werden
pszTargets
.Leerzeichen.
Die CStringT& TrimRight(XCHAR chTarget)
Version akzeptiert einen Zeichenparameter und entfernt alle Kopien dieses Zeichens am Ende der Zeichenfolgendaten CStringT
. Er beginnt am Ende der Zeichenfolge und arbeitet bis zum Anfang. Sie wird beendet, wenn ein anderes Zeichen gefunden wird oder CStringT
wenn keine Zeichendaten mehr enthalten sind.
Die CStringT& TrimRight(PCXSTR pszTargets)
Version akzeptiert eine auf NULL beendete Zeichenfolge, die alle verschiedenen zu suchden Zeichen enthält. Er entfernt alle Kopien dieser Zeichen im - CStringT
Objekt. Er beginnt am Ende der Zeichenfolge und arbeitet in Richtung des Front-End-Werts. Er wird beendet, wenn ein Zeichen gefunden wird, das nicht in der Zielzeichenfolge enthalten ist, CStringT
oder wenn keine Zeichendaten mehr enthalten sind. Es wird nicht versucht, die gesamte Zielzeichenfolge mit einer Teilzeichenfolge am Ende von zu verketten CStringT
.
Die CStringT& TrimRight()
Version erfordert keine Parameter. Es entfernt alle nachhinaufenden Leerzeichen am Ende der CStringT
Zeichenfolge. Leerzeichen können Zeilenumbrüche, Leerzeichen oder Registerkarten sein.
Beispiel
// 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
Siehe auch
Hierarchiediagramm
Freigegebene ATL/MFC-Klassen
CSimpleStringT
Klasse