Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här klassen representerar ett CStringT objekt.
Syntax
template<typename BaseType, class StringTraits>
class CStringT :
public CSimpleStringT<BaseType,
_CSTRING_IMPL_::_MFCDLLTraitsCheck<BaseType, StringTraits>::c_bIsMFCDLLTraits>
Parameterar
BaseType
Strängklassens teckentyp. Kan vara något av följande:
char(för ANSI-teckensträngar).wchar_t(för Unicode-teckensträngar).TCHAR(för både ANSI- och Unicode-teckensträngar).
StringTraits
Avgör om strängklassen behöver stöd för C Run-Time-bibliotek (CRT) och var strängresurser finns. Kan vara något av följande:
StrTraitATL<wchar_t | char | TCHAR, ChTraitsCRT<wchar_t | char | TCHAR>>Klassen kräver CRT-stöd och söker efter resurssträngar i modulen som anges av
m_hInstResource(en medlem i programmets modulklass).StrTraitATL<wchar_t | char | TCHAR, ChTraitsOS<wchar_t | char |TCHAR>>Klassen kräver inte CRT-stöd och söker efter resurssträngar i modulen som anges av
m_hInstResource(en medlem i programmets modulklass).StrTraitMFC<wchar_t | char | TCHAR, ChTraitsCRT<wchar_t | char | TCHAR>>Klassen kräver CRT-stöd och söker efter resurssträngar med hjälp av MFC-standardsökalgoritmen.
StrTraitMFC<wchar_t | char | TCHAR, ChTraitsOS<wchar_t | char | TCHAR>>Klassen kräver inte CRT-stöd och söker efter resurssträngar med hjälp av MFC-standardsökalgoritmen.
Medlemmar
Offentliga konstruktorer
| Namn | Beskrivning |
|---|---|
CStringT::CStringT |
Konstruerar ett CStringT objekt på olika sätt. |
CStringT::~CStringT |
Förstör ett CStringT objekt. |
Offentliga metoder
| Namn | Beskrivning |
|---|---|
CStringT::AllocSysString |
Allokerar en BSTR från CStringT data. |
CStringT::AnsiToOem |
Gör en konvertering på plats från ANSI-teckenuppsättningen till OEM-teckenuppsättningen. |
CStringT::AppendFormat |
Lägger till formaterade data i ett befintligt CStringT objekt. |
CStringT::Collate |
Jämför två strängar (skiftlägeskänslig, använder språkspecifik information). |
CStringT::CollateNoCase |
Jämför två strängar (skiftlägesokänslig, använder språkspecifik information). |
CStringT::Compare |
Jämför två strängar (skiftlägeskänsliga). |
CStringT::CompareNoCase |
Jämför två strängar (skiftlägesokänsliga). |
CStringT::Delete |
Tar bort ett tecken eller tecken från en sträng. |
CStringT::Find |
Hittar ett tecken eller en delsträng i en större sträng. |
CStringT::FindOneOf |
Hittar det första matchande tecknet från en uppsättning. |
CStringT::Format |
Formaterar strängen som sprintf den gör. |
CStringT::FormatMessage |
Formaterar en meddelandesträng. |
CStringT::FormatMessageV |
Formaterar en meddelandesträng med hjälp av en variabelargumentlista. |
CStringT::FormatV |
Formaterar strängen med hjälp av en variabellista med argument. |
CStringT::GetEnvironmentVariable |
Anger strängen till värdet för den angivna miljövariabeln. |
CStringT::Insert |
Infogar ett enskilt tecken eller en delsträng i det angivna indexet i strängen. |
CStringT::Left |
Extraherar den vänstra delen av en sträng. |
CStringT::LoadString |
Läser in ett befintligt CStringT objekt från en Windows-resurs. |
CStringT::MakeLower |
Konverterar alla tecken i den här strängen till gemener. |
CStringT::MakeReverse |
Ändrar strängen. |
CStringT::MakeUpper |
Konverterar alla tecken i den här strängen till versaler. |
CStringT::Mid |
Extraherar den mellersta delen av en sträng. |
CStringT::OemToAnsi |
Gör en konvertering på plats från OEM-teckenuppsättningen till ANSI-teckenuppsättningen. |
CStringT::Remove |
Tar bort angivna tecken från en sträng. |
CStringT::Replace |
Ersätter angivna tecken med andra tecken. |
CStringT::ReverseFind |
Söker efter ett tecken i en större sträng. startar från slutet. |
CStringT::Right |
Extraherar den högra delen av en sträng. |
CStringT::SetSysString |
Anger ett befintligt BSTR objekt med data från ett CStringT objekt. |
CStringT::SpanExcluding |
Extraherar tecken från strängen, från och med det första tecknet, som inte finns i den uppsättning tecken som identifieras av pszCharSet. |
CStringT::SpanIncluding |
Extraherar en delsträng som endast innehåller tecknen i en uppsättning. |
CStringT::Tokenize |
Extraherar angivna token i en målsträng. |
CStringT::Trim |
Trimmar alla inledande och avslutande blankstegstecken från strängen. |
CStringT::TrimLeft |
Trimmar inledande blankstegstecken från strängen. |
CStringT::TrimRight |
Trimmar avslutande blankstegstecken från strängen. |
Operatörer
| Namn | Beskrivning |
|---|---|
CStringT::operator = |
Tilldelar ett nytt värde till ett CStringT objekt. |
CStringT::operator + |
Sammanfogar två strängar, eller ett tecken och en sträng. |
CStringT::operator += |
Sammanfogar en ny sträng till slutet av en befintlig sträng. |
CStringT::operator == |
Avgör om två strängar är logiskt lika. |
CStringT::operator != |
Avgör om två strängar inte är logiskt lika med. |
CStringT::operator < |
Avgör om strängen till vänster om operatorn är mindre än strängen på höger sida. |
CStringT::operator > |
Avgör om strängen till vänster om operatorn är större än strängen till höger. |
CStringT::operator <= |
Avgör om strängen till vänster om operatorn är mindre än eller lika med strängen till höger. |
CStringT::operator >= |
Avgör om strängen till vänster om operatorn är större än eller lika med strängen till höger. |
Anmärkningar
CStringT ärver från CSimpleStringT klass. Avancerade funktioner, till exempel teckenmanipulering, beställning och sökning, implementeras av CStringT.
Anmärkning
CStringT objekt kan utlösa undantag. Detta inträffar när ett CStringT objekt får slut på minne av någon anledning.
Ett CStringT objekt består av en sekvens med tecken med variabel längd.
CStringT innehåller funktioner och operatorer som använder syntax som liknar den i Basic. Sammanfognings- och jämförelseoperatorer, tillsammans med förenklad minneshantering, gör CStringT objekt enklare att använda än vanliga teckenmatriser.
Anmärkning
Även om det är möjligt att skapa CStringT instanser som innehåller inbäddade null-tecken rekommenderar vi mot det. Anropa metoder och operatorer på CStringT objekt som innehåller inbäddade null-tecken kan ge oavsiktliga resultat.
Genom att använda olika kombinationer av parametrarna BaseTypeStringTraits och CStringT kan objekt komma i följande typer, som har fördefinierade av ATL-biblioteken.
Om du använder i ett ATL-program:
CString, CStringAoch CStringW exporteras från MFC DLL (MFC90.DLL), aldrig från användar-DLL:er. Detta görs för att förhindra CStringT att definieras flera gånger.
Anmärkning
Om koden innehåller lösningen för länkfel som beskrivs i Exportera strängklasser med CStringT bör du ta bort koden. Det behövs inte längre.
Följande strängtyper är tillgängliga i MFC-baserade program:
| CStringT-typ | Deklaration |
|---|---|
CStringA |
En ANSI-teckentypsträng med CRT-stöd. |
CStringW |
En Unicode-teckentypssträng med CRT-stöd. |
CString |
Både ANSI- och Unicode-teckentyper med CRT-stöd. |
Följande strängtyper är tillgängliga i projekt där ATL_CSTRING_NO_CRT definieras:
| CStringT-typ | Deklaration |
|---|---|
CAtlStringA |
En ANSI-teckentypssträng utan CRT-stöd. |
CAtlStringW |
En Unicode-teckentypssträng utan CRT-stöd. |
CAtlString |
Både ANSI- och Unicode-teckentyper utan CRT-stöd. |
Följande strängtyper är tillgängliga i projekt där ATL_CSTRING_NO_CRT inte har definierats:
| CStringT-typ | Deklaration |
|---|---|
CAtlStringA |
En ANSI-teckentypsträng med CRT-stöd. |
CAtlStringW |
En Unicode-teckentypssträng med CRT-stöd. |
CAtlString |
Både ANSI- och Unicode-teckentyper med CRT-stöd. |
CString objekt har också följande egenskaper:
CStringTobjekt kan växa på grund av sammanfogningsåtgärder.CStringTobjekt följer "värdesemantik". Tänk på ettCStringTobjekt som en faktisk sträng, inte som en pekare till en sträng.Du kan fritt ersätta
CStringTobjekt medPCXSTRfunktionsargument.Anpassad minneshantering för strängbuffertar. Mer information finns i Minneshantering och
CStringT.
Fördefinierade CStringT-typer
Eftersom CStringT använder ett mallargument för att definiera teckentypen (antingen wchar_t eller char) som stöds kan metodparametertyper vara komplicerade ibland. För att förenkla det här problemet definieras och används en uppsättning fördefinierade typer i hela CStringT klassen. I följande tabell visas de olika typerna:
| Namn | Beskrivning |
|---|---|
XCHAR |
Ett enskilt tecken (antingen wchar_t eller char) med samma teckentyp som objektet CStringT . |
YCHAR |
Ett enskilt tecken (antingen wchar_t eller char) med motsatt teckentyp som CStringT objekt. |
PXSTR |
En pekare till en teckensträng (antingen wchar_t eller char) med samma teckentyp som objektet CStringT . |
PYSTR |
En pekare till en teckensträng (antingen wchar_t eller char) med motsatt teckentyp som CStringT objekt. |
PCXSTR |
En pekare till en const teckensträng (antingen wchar_t eller char) med samma teckentyp som objektet CStringT . |
PCYSTR |
En pekare till en const teckensträng (antingen wchar_t eller char) med motsatt teckentyp som CStringT objekt. |
Anmärkning
Kod som tidigare använde odokumenterade metoder för CString (till exempel AssignCopy) måste ersättas med kod som använder följande dokumenterade metoder CStringT (till exempel GetBuffer eller ReleaseBuffer). Dessa metoder ärvs från CSimpleStringT.
Arvshierarki
CStringT
Kravspecifikation
| Rubrik | Använd för |
|---|---|
cstringt.h |
Strängobjekt med endast MFC |
atlstr.h |
Icke-MFC-strängobjekt |
CStringT::AllocSysString
Allokerar en Automation-kompatibel sträng av typen BSTR och kopierar innehållet i CStringT objektet till det, inklusive det avslutande null-tecknet.
BSTR AllocSysString() const;
Returvärde
Den nyligen allokerade strängen.
Anmärkningar
I MFC-program utlöses en CMemoryException klass om det inte finns tillräckligt med minne. I ATL-program utlöses en CAtlException . Den här funktionen används normalt för att returnera strängar för Automation.
Om den här strängen skickas till en COM-funktion som en [in] parameter kräver det ofta att anroparen frigör strängen. Detta kan göras med hjälp SysFreeStringav , enligt beskrivningen i Windows SDK. Mer information finns i Allokera och frigöra minne för en BSTR.
Mer information om OLE-allokeringsfunktioner i Windows SysAllocString finns i Windows SDK.
Exempel
I följande exempel visas användningen av 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
Konverterar alla tecken i det här CStringT objektet från ANSI-teckenuppsättningen till OEM-teckenuppsättningen.
void AnsiToOem();
Anmärkningar
Funktionen är inte tillgänglig om _UNICODE den har definierats.
Exempel
// 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
Lägger till formaterade data i ett befintligt CStringT objekt.
void __cdecl AppendFormat(PCXSTR pszFormat, [, argument] ...);
void __cdecl AppendFormat(UINT nFormatID, [, argument] ...);
Parameterar
pszFormat
En formatkontrollsträng.
nFormatID
Strängresursidentifieraren som innehåller formatkontrollsträngen.
argument
Valfria argument.
Anmärkningar
Den här funktionen formaterar och lägger till en serie tecken och värden i CStringT. Varje valfritt argument (om det finns) konverteras och läggs till enligt motsvarande formatspecifikation i pszFormat eller från strängresursen som identifieras av nFormatID.
Exempel
// 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
Jämför två strängar med funktionen _tcscollgeneric-text .
int Collate(PCXSTR psz) const throw();
Parameterar
psz
Den andra strängen som används för jämförelse.
Returvärde
Noll om strängarna är identiska, < 0 om det här CStringT objektet är mindre än psz, eller > 0 om det här CStringT objektet är större än psz.
Anmärkningar
Funktionen _tcscollgeneric-text , som definieras i TCHAR.H, mappar till antingen strcoll, wcscolleller _mbscoll, beroende på den teckenuppsättning som definieras vid kompileringstiden. Varje funktion gör en skiftlägeskänslig jämförelse av strängarna enligt den kodsida som för närvarande används. Mer information finns i strcoll, , wcscoll_mbscoll, _strcoll_l, , _wcscoll_l_mbscoll_l.
CStringT::CollateNoCase
Jämför två strängar med funktionen _tcscollgeneric-text .
int CollateNoCase(PCXSTR psz) const throw();
Parameterar
psz
Den andra strängen som används för jämförelse.
Returvärde
Noll om strängarna är identiska (ignorerar skiftläge), < 0 om det här CStringT objektet är mindre än psz (ignorerar skiftläge) eller > 0 om det här CStringT objektet är större än psz (ignorerar skiftläge).
Anmärkningar
Funktionen _tcscollgeneric-text , som definieras i TCHAR.H, mappar till antingen stricoll, wcsicolleller _mbsicoll, beroende på den teckenuppsättning som definieras vid kompileringstiden. Varje funktion gör en skiftlägeskänslig jämförelse av strängarna, enligt den kodsida som för närvarande används. Mer information finns i strcoll, wcscoll, _mbscoll, _strcoll_l, , _wcscoll_l. _mbscoll_l
Exempel
// 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
Jämför två strängar (skiftlägeskänsliga).
int Compare(PCXSTR psz) const;
Parameterar
psz
Den andra strängen som används för jämförelse.
Returvärde
Noll om strängarna är identiska, < 0 om det här CStringT objektet är mindre än psz, eller > 0 om det här CStringT objektet är större än psz.
Anmärkningar
Funktionen _tcscmpgeneric-text , som definieras i TCHAR.H, mappar till antingen strcmp, wcscmpeller _mbscmp, beroende på den teckenuppsättning som definieras vid kompileringstiden. Varje funktion gör en skiftlägeskänslig jämförelse av strängarna och påverkas inte av nationella inställningar. Mer information finns i strcmp, wcscmp, _mbscmp.
Om strängen innehåller inbäddade null-värden anses strängen trunkeras vid det första inbäddade null-tecknet i jämförelsesyfte.
Exempel
I följande exempel visas användningen av 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
Jämför två strängar (skiftlägesokänsliga).
int CompareNoCase(PCXSTR psz) const throw();
Parameterar
psz
Den andra strängen som används för jämförelse.
Returvärde
Noll om strängarna är identiska (ignorerar skiftläge), <0 om det här CStringT objektet är mindre än psz (ignorerar skiftläge) eller >0 om det här CStringT objektet är större än psz (ignorerar skiftläge).
Anmärkningar
Funktionen _tcsicmpgeneric-text , som definieras i TCHAR.H, mappar till antingen _stricmp, _wcsicmp eller _mbsicmp, beroende på den teckenuppsättning som definieras vid kompileringstiden. Varje funktion gör en skiftlägeskänslig jämförelse av strängarna. Jämförelsen beror på aspekten LC_CTYPE av nationella inställningar men inte LC_COLLATE. Mer information finns i _stricmp, _wcsicmp, _mbsicmp, _stricmp_l, , _wcsicmp_l. _mbsicmp_l
Exempel
// 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
Konstruerar ett 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);
Parameterar
pch
En pekare till en matris med tecken med längd nLength, inte null-avslutad.
nLength
Antal tecken i pch.
ch
Ett enda tecken.
pszSrc
En null-avslutad sträng som ska kopieras till det här CStringT objektet.
pStringMgr
En pekare till minneshanteraren för CStringT objektet. Mer information om IAtlStringMgr och minneshantering för CStringTfinns i Minneshantering med CStringT.
strSrc
Ett befintligt CStringT objekt som ska kopieras till det här CStringT objektet. Mer information om CThisString och CThisSimpleStringfinns i avsnittet Anmärkningar.
varSrc
Ett variantobjekt som ska kopieras till det här CStringT objektet.
BaseType
Strängklassens teckentyp. Kan vara något av följande:
char (för ANSI-teckensträngar).
wchar_t (för Unicode-teckensträngar).
TCHAR (för både ANSI- och Unicode-teckensträngar).
bMFCDLL
Booleskt värde som anger om projektet är en MFC DLL (TRUE) eller inte (FALSE).
SystemString
Måste vara System::String, och projektet måste kompileras med /clr.
pString
Ett handtag för ett CStringT objekt.
Anmärkningar
Eftersom konstruktorerna kopierar indata till ny allokerad lagring kan minnesfel uppstå. Vissa av dessa konstruktorer fungerar som konverteringsfunktioner. På så sätt kan du till exempel ersätta ett LPTSTR där ett CStringT objekt förväntas.
CStringT(LPCSTRlpsz): Konstruerar en UnicodeCStringTfrån en ANSI-sträng. Du kan också använda den här konstruktorn för att läsa in en strängresurs enligt exemplet nedan.CStringT(LPCWSTRlpsz): Konstruerar enCStringTfrån en Unicode-sträng.CStringT(const unsigned char*psz): Gör att du kan skapa enCStringTfrån en pekare tillunsigned char.
Anmärkning
Definiera makrot _CSTRING_DISABLE_NARROW_WIDE_CONVERSION för att inaktivera implicit strängkonvertering mellan ANSI- och Unicode-strängar. Makrot undantas från kompileringskonstruktorer som stöder konvertering.
Parametern strSrc kan vara antingen ett objekt eller CStringT ett CThisSimpleString objekt. För CStringTanvänder du någon av dess standard-instansieringar (CString, CStringA, eller CStringW); för CThisSimpleString, en this pekare.
CThisSimpleString deklarerar en instans av CSimpleStringT klassen, som är en mindre strängklass med mindre inbyggda funktioner än CStringT klassen.
Överlagringsoperatorn CSimpleStringT<>&() konstruerar ett CStringT objekt från en CSimpleStringT deklaration.
Anmärkning
Även om det är möjligt att skapa CStringT instanser som innehåller inbäddade null-tecken rekommenderar vi mot det. Anropa metoder och operatorer på CStringT objekt som innehåller inbäddade null-tecken kan ge oavsiktliga resultat.
Exempel
// 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
Förstör objektet CStringT .
~CStringT() throw();
Anmärkningar
Förstör objektet CStringT .
CStringT::Delete
Tar bort ett tecken eller tecken från en sträng som börjar med tecknet vid det angivna indexet.
int Delete(int iIndex, int nCount = 1);
Parameterar
iIndex
Det nollbaserade indexet för det första tecknet i objektet som CStringT ska tas bort.
nCount
Antalet tecken som ska tas bort.
Returvärde
Längden på den ändrade strängen.
Anmärkningar
Om nCount är längre än strängen tas resten av strängen bort.
Exempel
// 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
Söker i den här strängen efter den första matchningen av ett tecken eller understräng.
int Find(PCXSTR pszSub, int iStart=0) const throw();
int Find(XCHAR ch, int iStart=0) const throw();
Parameterar
pszSub
En delsträng att söka efter.
iStart
Indexet för tecknet i strängen för att påbörja sökningen med eller 0 för att starta från början.
ch
Ett enda tecken att söka efter.
Returvärde
Det nollbaserade indexet för det första tecknet i det här CStringT objektet som matchar den begärda delsträngen eller tecknen. -1 om delsträngen eller tecknet inte hittas.
Anmärkningar
Funktionen är överbelastad för att acceptera båda entecken (liknar körningsfunktionen strchr) och strängar (liknar strstr).
Exempel
// 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
Söker i den här strängen efter det första tecknet som matchar alla tecken i pszCharSet.
int FindOneOf(PCXSTR pszCharSet) const throw();
Parameterar
pszCharSet
Sträng som innehåller tecken för matchning.
Returvärde
Det nollbaserade indexet för det första tecknet i den här strängen som också finns i pszCharSet; -1 om det inte finns någon matchning.
Anmärkningar
Hittar den första förekomsten av något av tecknen i pszCharSet.
Exempel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.FindOneOf(_T("xd")) == 3); // 'd' is first match
CStringT::Format
Skriver formaterade data till en CStringT på samma sätt som sprintf_s formaterar data till en teckenmatris i C-stil.
void __cdecl Format(UINT nFormatID, [, argument]...);
void __cdecl Format(PCXSTR pszFormat, [, argument] ...);
Parameterar
nFormatID
Strängresursidentifieraren som innehåller formatkontrollsträngen.
pszFormat
En formatkontrollsträng.
argument
Valfria argument.
Anmärkningar
Den här funktionen formaterar och lagrar en serie tecken och värden i CStringT. Varje valfritt argument (om det finns) konverteras och utdata enligt motsvarande formatspecifikation i pszFormat eller från strängresursen som identifieras av nFormatID.
Anropet misslyckas om själva strängobjektet erbjuds som en parameter till Format. Följande kod orsakar till exempel oförutsägbara resultat:
CAtlString str = _T("Some Data");
str.Format(_T("%s%d"), str, 123);
// Attention: str is also used in the parameter list.
Mer information finns i Syntax för formatspecifikation: printf och wprintf funktioner.
Exempel
// 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
Formaterar en meddelandesträng.
void __cdecl FormatMessage(UINT nFormatID, [, argument]...);
void __cdecl FormatMessage(PCXSTR pszFormat, [, argument]...);
Parameterar
nFormatID
Strängresursidentifieraren som innehåller den oformaterade meddelandetexten.
pszFormat
Pekar på formatkontrollsträngen. Den genomsöks efter infogningar och formateras därefter. Formatsträngen liknar run-time-formatsträngar i funktionsformat printf, förutom att parametrarna kan infogas i godtycklig ordning.
argument
Valfria argument.
Anmärkningar
Funktionen kräver en meddelandedefinition som indata. Meddelandedefinitionen bestäms av pszFormat eller från strängresursen som identifieras av nFormatID. Funktionen kopierar den formaterade meddelandetexten CStringT till objektet och bearbetar eventuella inbäddade infogningssekvenser om det begärs.
Anmärkning
FormatMessage försöker allokera systemminne för den nyligen formaterade strängen. Om det här försöket misslyckas utlöses automatiskt ett minnesundanstag.
Varje infogning måste ha en motsvarande parameter som följer parametern pszFormat eller nFormatID . I meddelandetexten stöds flera escape-sekvenser för dynamisk formatering av meddelandet. Mer information finns i Windows-funktionen FormatMessage i Windows SDK.
Exempel
// 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
Formaterar en meddelandesträng med hjälp av en variabelargumentlista.
void FormatMessageV(PCXSTR pszFormat, va_list* pArgList);
Parameterar
pszFormat
Pekar på formatkontrollsträngen. Den genomsöks efter infogningar och formateras därefter. Formatsträngen liknar run-time-formatsträngar i funktionsformat printf, förutom att parametrarna kan infogas i godtycklig ordning.
pArgList
Pekare till en lista med argument.
Anmärkningar
Funktionen kräver en meddelandedefinition som indata, som bestäms av pszFormat. Funktionen kopierar den formaterade meddelandetexten CStringT och en variabellista med argument till objektet och bearbetar eventuella inbäddade infogningssekvenser om det begärs.
Anmärkning
FormatMessageV anropar CStringT::FormatMessage, som försöker allokera systemminne för den nyligen formaterade strängen. Om det här försöket misslyckas utlöses automatiskt ett minnesundanstag.
Mer information finns i Windows-funktionen FormatMessage i Windows SDK.
CStringT::FormatV
Formaterar en meddelandesträng med hjälp av en variabelargumentlista.
void FormatV(PCXSTR pszFormat, va_list args);
Parameterar
pszFormat
Pekar på formatkontrollsträngen. Den genomsöks efter infogningar och formateras därefter. Formatsträngen liknar run-time-formatsträngar i funktionsformat printf, förutom att parametrarna kan infogas i godtycklig ordning.
args
Pekare till en lista med argument.
Anmärkningar
Skriver en formaterad sträng och en variabellista med argument till en CStringT sträng på samma sätt som vsprintf_s formaterar data till en teckenmatris i C-format.
Exempel
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
Anger strängen till värdet för den angivna miljövariabeln.
BOOL GetEnvironmentVariable(PCXSTR pszVar);
Parameterar
pszVar
Pekare till en null-avslutad sträng som anger miljövariabeln.
Returvärde
Nonzero om det lyckas; annars 0.
Anmärkningar
Hämtar värdet för den angivna variabeln från miljöblocket i anropsprocessen. Värdet är i form av en null-avslutad sträng med tecken.
Exempel
// 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
Infogar ett enskilt tecken eller en delsträng i det angivna indexet i strängen.
int Insert(int iIndex, PCXSTR psz);
int Insert(int iIndex, XCHAR ch);
Parameterar
iIndex
Indexet för det tecken som insättningen ska äga rum före.
psz
En pekare till delsträngen som ska infogas.
ch
Det tecken som ska infogas.
Returvärde
Längden på den ändrade strängen.
Anmärkningar
Parametern iIndex identifierar det första tecknet som ska flyttas för att göra plats för tecknet eller delsträngen. Om nIndex är noll sker infogningen före hela strängen. Om nIndex är högre än längden på strängen sammanfogar funktionen den aktuella strängen och det nya materialet som tillhandahålls av antingen ch eller psz.
Exempel
// 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
Extraherar de vänstra nCount tecknen från det här CStringT objektet och returnerar en kopia av den extraherade delsträngen.
CStringT Left(int nCount) const;
Parameterar
nCount
Antalet tecken som ska extraheras från det här CStringT objektet.
Returvärde
Ett CStringT objekt som innehåller en kopia av det angivna teckenintervallet. Det returnerade CStringT objektet kan vara tomt.
Anmärkningar
Om nCount överskrider stränglängden extraheras hela strängen.
Left liknar funktionen Basic Left .
För flerbytesteckenuppsättningar (MBCS) nCount behandlar varje 8-bitars sekvens som ett tecken, så att nCount returnerar antalet flerbytestecken multiplicerat med två.
Exempel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Left(2) == _T("ab"));
CStringT::LoadString
Läser en Windows-strängresurs, identifierad av nID, till ett befintligt CStringT objekt.
BOOL LoadString(HINSTANCE hInstance, UINT nID, WORD wLanguageID);
BOOL LoadString(HINSTANCE hInstance, UINT nID);
BOOL LoadString(UINT nID);
Parameterar
hInstance
En referens till modulens instans.
nID
Ett Windows-strängresurs-ID.
wLanguageID
Strängresursens språk.
Returvärde
Nonzero om resursbelastningen lyckades. annars 0.
Anmärkningar
Läser in strängresursen (nID) från den angivna modulen (hInstance) med det angivna språket (wLanguage).
Exempel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s;
s.LoadString(IDS_APP_TITLE);
CStringT::MakeLower
Konverterar objektet till en gemen CStringT sträng.
CStringT& MakeLower();
Returvärde
Den resulterande gemenersträngen.
Exempel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("ABC"));
ASSERT(s.MakeLower() == _T("abc"));
CStringT::MakeReverse
Ändrar ordningen på tecknen i CStringT objektet.
CStringT& MakeReverse();
Returvärde
Den resulterande omvända strängen.
Exempel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abc"));
ASSERT(s.MakeReverse() == _T("cba"));
CStringT::MakeUpper
Konverterar objektet CStringT till en versalsträng.
CStringT& MakeUpper();
Returvärde
Den resulterande versaler strängen.
Anmärkningar
Exempel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abc"));
ASSERT(s.MakeUpper() == _T("ABC"));
CStringT::Mid
Extraherar en delsträng med längdtecken nCount från det här CStringT objektet med början vid position iFirst (nollbaserad).
CStringT Mid(int iFirst, int nCount) const;
CStringT Mid(int iFirst) const;
Parameterar
iFirst
Det nollbaserade indexet för det första tecknet i det här CStringT objektet som ska ingå i den extraherade delsträngen.
nCount
Antalet tecken som ska extraheras från det här CStringT objektet. Om den här parametern inte anges extraheras resten av strängen.
Returvärde
Ett CStringT objekt som innehåller en kopia av det angivna teckenintervallet. Det returnerade CStringT objektet kan vara tomt.
Anmärkningar
Funktionen returnerar en kopia av den extraherade delsträngen.
Mid liknar funktionen Basic Mid (förutom att index i Basic är enbaserade).
För flerbytesteckenuppsättningar (MBCS) nCount refererar till varje 8-bitars tecken, dvs. en lead- och trail-byte i ett flerbytestecken räknas som två tecken.
Exempel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Mid(2, 3) == _T("cde"));
CStringT::OemToAnsi
Konverterar alla tecken i det här CStringT objektet från OEM-teckenuppsättningen till ANSI-teckenuppsättningen.
void OemToAnsi();
Anmärkningar
Den här funktionen är inte tillgänglig om _UNICODE den har definierats.
Exempel
Se exemplet för CStringT::AnsiToOem.
CStringT::operator =
Tilldelar strängen ett nytt värde.
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);
Parameterar
strSrc
A CStringT för att tilldela till den här strängen.
str
En referens till ett CThisSimpleString objekt.
bMFCDLL
Ett booleskt värde som anger om projektet är en MFC DLL eller inte.
BaseType
Strängbastypen.
var
Ett variantobjekt som ska tilldelas till den här strängen.
ch
Ett ANSI- eller Unicode-tecken som ska tilldelas till strängen.
pszSrc
En pekare till den ursprungliga strängen som tilldelas.
Anmärkningar
Tilldelningsoperatorn accepterar ett annat CStringT objekt, en teckenpekare eller ett enda tecken. Minnesfel kan inträffa när du använder den här operatorn eftersom ny lagring kan allokeras.
Mer information om CThisSimpleStringfinns i avsnittet Anmärkningar i CStringT::CStringT.
Anmärkning
Även om det är möjligt att skapa CStringT instanser som innehåller inbäddade null-tecken rekommenderar vi mot det. Anropa metoder och operatorer på CStringT objekt som innehåller inbäddade null-tecken kan ge oavsiktliga resultat.
CStringT::operator +
Sammanfogar två strängar eller ett tecken och en sträng.
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);
Parameterar
ch1
Ett ANSI- eller Unicode-tecken som sammanfogas med en sträng.
ch2
Ett ANSI- eller Unicode-tecken som sammanfogas med en sträng.
str1
A CStringT för att sammanfoga med en sträng eller ett tecken.
str2
A CStringT för att sammanfoga med en sträng eller ett tecken.
psz1
En pekare till en null-avslutad sträng som sammanfogas med en sträng eller ett tecken.
psz2
En pekare till en sträng som sammanfogas med en sträng eller ett tecken.
Anmärkningar
Det finns sju överlagringsformer av CStringT::operator+ funktionen. Den första versionen sammanfogar två befintliga CStringT objekt. Nästa två sammanfogar ett CStringT objekt och en null-avslutad sträng. Nästa två sammanfogar ett CStringT objekt och ett ANSI-tecken. De två sista sammanfogar ett CStringT objekt och ett Unicode-tecken.
Anmärkning
Även om det är möjligt att skapa CStringT instanser som innehåller inbäddade null-tecken rekommenderar vi mot det. Anropa metoder och operatorer på CStringT objekt som innehåller inbäddade null-tecken kan ge oavsiktliga resultat.
Exempel
// 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 +=
Sammanfogar tecken till slutet av strängen.
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);
Parameterar
str
En referens till ett CThisSimpleString objekt.
bMFCDLL
Ett booleskt värde som anger om projektet är en MFC DLL eller inte.
BaseType
Strängbastypen.
var
Ett variantobjekt som ska sammanfogas med den här strängen.
ch
Ett ANSI- eller Unicode-tecken som sammanfogas med en sträng.
pszSrc
En pekare till den ursprungliga strängen som sammanfogas.
strSrc
A CStringT för att sammanfoga till den här strängen.
Anmärkningar
Operatorn accepterar ett annat CStringT objekt, en teckenpekare eller ett enda tecken. Minnesfel kan inträffa när du använder den här sammanfogningsoperatorn eftersom ny lagring kan allokeras för tecken som läggs till i det här CStringT objektet.
Mer information om CThisSimpleStringfinns i avsnittet Anmärkningar i CStringT::CStringT.
Anmärkning
Även om det är möjligt att skapa CStringT instanser som innehåller inbäddade null-tecken rekommenderar vi mot det. Anropa metoder och operatorer på CStringT objekt som innehåller inbäddade null-tecken kan ge oavsiktliga resultat.
Exempel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abc"));
ASSERT((s += _T("def")) == _T("abcdef"));
CStringT::operator ==
Avgör om två strängar är logiskt lika med.
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();
Parameterar
ch1
Ett ANSI- eller Unicode-tecken för jämförelse.
ch2
Ett ANSI- eller Unicode-tecken för jämförelse.
str1
En CStringT för jämförelse.
str2
En CStringT för jämförelse.
psz1
En pekare till en null-avslutad sträng för jämförelse.
psz2
En pekare till en null-avslutad sträng för jämförelse.
Anmärkningar
Testar om en sträng eller ett tecken på vänster sida är lika med en sträng eller ett tecken på höger sida och returnerar TRUE eller FALSE därefter.
Exempel
// 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 !=
Avgör om två strängar är logiskt lika med.
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();
Parameterar
ch1
Ett ANSI- eller Unicode-tecken som sammanfogas med en sträng.
ch2
Ett ANSI- eller Unicode-tecken som sammanfogas med en sträng.
str1
En CStringT för jämförelse.
str2
En CStringT för jämförelse.
psz1
En pekare till en null-avslutad sträng för jämförelse.
psz2
En pekare till en null-avslutad sträng för jämförelse.
Anmärkningar
Testar om en sträng eller ett tecken på vänster sida inte är lika med en sträng eller ett tecken till höger.
Exempel
// 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 <
Avgör om strängen till vänster om operatorn är mindre än strängen på höger sida.
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();
Parameterar
str1
En CStringT för jämförelse.
str2
En CStringT för jämförelse.
psz1
En pekare till en null-avslutad sträng för jämförelse.
psz2
En pekare till en null-avslutad sträng för jämförelse.
Anmärkningar
En lexicographical jämförelse mellan strängar, tecken efter tecken tills:
Den hittar två motsvarande tecken som är olika och resultatet av deras jämförelse tas som ett resultat av jämförelsen mellan strängarna.
Den hittar inga skillnader, men den ena strängen har fler tecken än den andra, och den kortare strängen anses vara mindre än den längre strängen.
Den hittar inga skillnader och upptäcker att strängarna har samma antal tecken, och därför är strängarna lika.
Exempel
// 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 >
Avgör om strängen till vänster om operatorn är större än strängen till höger.
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();
Parameterar
str1
En CStringT för jämförelse.
str2
En CStringT för jämförelse.
psz1
En pekare till en null-avslutad sträng för jämförelse.
psz2
En pekare till en null-avslutad sträng för jämförelse.
Anmärkningar
En lexicographical jämförelse mellan strängar, tecken efter tecken tills:
Den hittar två motsvarande tecken som är olika och resultatet av deras jämförelse tas som ett resultat av jämförelsen mellan strängarna.
Den hittar inga skillnader, men den ena strängen har fler tecken än den andra, och den kortare strängen anses vara mindre än den längre strängen.
Den hittar inga skillnader och upptäcker att strängarna har samma antal tecken, så strängarna är lika.
Exempel
// 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 <=
Avgör om strängen till vänster om operatorn är mindre än eller lika med strängen till höger.
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();
Parameterar
str1
En CStringT för jämförelse.
str2
En CStringT för jämförelse.
psz1
En pekare till en null-avslutad sträng för jämförelse.
psz2
En pekare till en null-avslutad sträng för jämförelse.
Anmärkningar
En lexicographical jämförelse mellan strängar, tecken efter tecken tills:
Den hittar två motsvarande tecken som är olika och resultatet av deras jämförelse tas som ett resultat av jämförelsen mellan strängarna.
Den hittar inga skillnader, men den ena strängen har fler tecken än den andra, och den kortare strängen anses vara mindre än den längre strängen.
Den hittar inga skillnader och upptäcker att strängarna har samma antal tecken, så strängarna är lika.
Exempel
// 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 >=
Avgör om strängen till vänster om operatorn är större än eller lika med strängen till höger.
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();
Parameterar
str1
En CStringT för jämförelse.
str2
En CStringT för jämförelse.
psz1
En pekare till en sträng för jämförelse.
psz2
En pekare till en sträng för jämförelse.
Anmärkningar
En lexicographical jämförelse mellan strängar, tecken efter tecken tills:
Den hittar två motsvarande tecken som är olika och resultatet av deras jämförelse tas som ett resultat av jämförelsen mellan strängarna.
Den hittar inga skillnader, men den ena strängen har fler tecken än den andra, och den kortare strängen anses vara mindre än den längre strängen.
Den hittar inga skillnader och upptäcker att strängarna har samma antal tecken, så strängarna är lika.
Exempel
// 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
Tar bort alla instanser av det angivna tecknet från strängen.
int Remove(XCHAR chRemove);
Parameterar
chRemove
Tecknet som ska tas bort från en sträng.
Returvärde
Antalet tecken som tagits bort från strängen. Noll om strängen inte ändras.
Anmärkningar
Jämförelser för tecknet är skiftlägeskänsliga.
Exempel
// 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
Det finns två versioner av Replace. Den första versionen ersätter en eller flera kopior av en delsträng med hjälp av en annan delsträng. Båda delsträngarna är null-avslutade. Den andra versionen ersätter en eller flera kopior av ett tecken med hjälp av ett annat tecken. Båda versionerna fungerar på teckendata som lagras i CStringT.
int Replace(PCXSTR pszOld, PCXSTR pszNew);
int Replace(XCHAR chOld, XCHAR chNew);
Parameterar
pszOld
En pekare till en null-avslutad sträng som ska ersättas av pszNew.
pszNew
En pekare till en null-avslutad sträng som ersätter pszOld.
chOld
Tecknet som ska ersättas av chNew.
chNew
Tecknet ersätter chOld.
Returvärde
Returnerar antalet ersatta instanser av tecknet eller delsträngen, eller noll om strängen inte ändras.
Anmärkningar
Replace kan ändra stränglängden eftersom pszNew och pszOld inte behöver vara samma längd, och flera kopior av den gamla delsträngen kan ändras till den nya. Funktionen gör en skiftlägeskänslig matchning.
Exempel på CStringT instanser är CString, CStringAoch CStringW.
För CStringAfungerar Replace med ANSI- eller MBCS-tecken (multibyte). För CStringWfungerar Replace med breda tecken.
För CStringär teckendatatypen vald vid kompileringstid, baserat på om konstanterna i följande tabell har definierats.
| Definierad konstant | Teckendatatyp |
|---|---|
_UNICODE |
Breda tecken |
_MBCS |
Tecken med flera byte |
| Ingen av dem | Tecken med en byte |
| Båda | Odefinierad |
Exempel
// 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
Söker i det här CStringT objektet efter den sista matchningen av ett tecken.
int ReverseFind(XCHAR ch) const throw();
Parameterar
ch
Tecknet att söka efter.
Returvärde
Det nollbaserade indexet för det sista tecknet i det här CStringT objektet som matchar det begärda tecknet, eller -1 om tecknet inte hittas.
Anmärkningar
Funktionen liknar körningsfunktionen strrchr.
Exempel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcabc"));
ASSERT(s.ReverseFind(_T('b')) == 4);
CStringT::Right
Extraherar de sista (dvs. längst till höger) nCount tecknen från det här CStringT objektet och returnerar en kopia av den extraherade delsträngen.
CStringT Right(int nCount) const;
Parameterar
nCount
Antalet tecken som ska extraheras från det här CStringT objektet.
Returvärde
Ett CStringT objekt som innehåller en kopia av det angivna teckenintervallet. Det returnerade CStringT objektet kan vara tomt.
Anmärkningar
Om nCount överskrider stränglängden extraheras hela strängen.
Right liknar funktionen Basic Right (förutom att index i Basic är nollbaserade).
För flerbytesteckenuppsättningar (MBCS), nCount refererar till varje 8-bitars tecken, dvs. en lead- och trail-byte i ett flerbytestecken räknas som två tecken.
Exempel
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Right(2) == _T("ef"));
CStringT::SetSysString
Omallokerar det BSTR som pekas på och pbstr kopierar innehållet CStringT i objektet till det, inklusive NULL tecknet.
BSTR SetSysString(BSTR* pbstr) const;
Parameterar
pbstr
En pekare till en teckensträng.
Returvärde
Den nya strängen.
Anmärkningar
Beroende på innehållet i CStringT objektet kan värdet för det BSTR som refereras av pbstr ändras. Funktionen genererar ett CMemoryException om det inte finns tillräckligt med minne.
Den här funktionen används normalt för att ändra värdet för strängar som skickas som referens för Automation.
Exempel
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
Extraherar tecken från strängen, från och med det första tecknet, som inte finns i den uppsättning tecken som identifieras av pszCharSet.
CStringT SpanExcluding(PCXSTR pszCharSet) const;
Parameterar
pszCharSet
En sträng som tolkas som en uppsättning tecken.
Returvärde
En delsträng som innehåller tecken i strängen som inte finns i pszCharSet, som börjar med det första tecknet i strängen och slutar med det första tecknet som finns i strängen som också finns i pszCharSet (dvs. börjar med det första tecknet i strängen och upp till men exkluderar det första tecknet i strängen som hittas pszCharSet). Den returnerar hela strängen om inget tecken i pszCharSet hittas i strängen.
Anmärkningar
SpanExcluding extraherar och returnerar alla tecken som föregår den första förekomsten av ett tecken från pszCharSet (med andra ord returneras inte tecknet från pszCharSet och alla tecken som följer efter det i strängen). Om inget tecken från pszCharSet hittas i strängen returnerar du SpanExcluding hela strängen.
Exempel
// 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("abcdef"));
_tprintf_s(_T("%s"),src.SpanExcluding(_T(";,.-'")));
CStringT::SpanIncluding
Extraherar tecken från strängen, från och med det första tecknet, som finns i den uppsättning tecken som identifieras av pszCharSet.
CStringT SpanIncluding(PCXSTR pszCharSet) const;
Parameterar
pszCharSet
En sträng som tolkas som en uppsättning tecken.
Returvärde
En understräng som innehåller tecken i strängen som är i pszCharSet, som börjar med det första tecknet i strängen och slutar när ett tecken hittas i strängen som inte finns i pszCharSet.
SpanIncluding returnerar en tom delsträng om det första tecknet i strängen inte finns i den angivna uppsättningen.
Anmärkningar
Om strängens första tecken inte finns i teckenuppsättningen returnerar du SpanIncluding en tom sträng. Annars returneras en sekvens med efterföljande tecken som finns i uppsättningen.
Exempel
// 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
Hittar nästa token i en målsträng
CStringT Tokenize(PCXSTR pszTokens, int& iStart) const;
Parameterar
pszTokens
En sträng som innehåller tokenavgränsare. Ordningen på dessa avgränsare är inte viktig.
iStart
Det nollbaserade indexet för att påbörja sökningen.
Returvärde
Ett CStringT objekt som innehåller det aktuella tokenvärdet.
Anmärkningar
Funktionen Tokenize hittar nästa token i målsträngen. Uppsättningen med tecken i pszTokens anger möjliga avgränsare av token som ska hittas. Vid varje anrop till Tokenize funktionen startar vid iStarthoppar du över inledande avgränsare och returnerar ett CStringT objekt som innehåller den aktuella token, som är strängen med tecken upp till nästa avgränsartecken. Värdet iStart för uppdateras för att vara positionen efter slutavgränsarens tecken, eller -1 om slutet av strängen har nåtts. Fler token kan brytas ut från resten av målsträngen genom en serie anrop till Tokenize, med hjälp iStart av för att hålla reda på var i strängen nästa token ska läsas. När det inte finns fler token returnerar funktionen en tom sträng och iStart anges till -1.
Till skillnad från crt-tokenize-funktioner som strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_lTokenize ändrar inte målsträngen.
Exempel
// 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);
}
Utdata från det här exemplet är följande:
Resulting Token: First
Resulting Token: Second
Resulting Token: Third
CStringT::Trim
Trimmar inledande och avslutande tecken från strängen.
CStringT& Trim(XCHAR chTarget);
CStringT& Trim(PCXSTR pszTargets);
CStringT& Trim();
Parameterar
chTarget
Måltecknet som ska trimmas.
pszTargets
En pekare till en sträng som innehåller måltecken som ska trimmas. Alla inledande och avslutande förekomster av tecken i pszTargets kommer att trimmas från CStringT objektet.
Returvärde
Returnerar den trimmade strängen.
Anmärkningar
Tar bort alla inledande och avslutande förekomster av något av följande:
Tecknet som anges av
chTarget.Alla tecken som finns i strängen som anges av
pszTargets.Blanksteg.
Exempel
// 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
Utdata från det här exemplet är följande:
Before: "******Soccer is best, but liquor is quicker!!!!!"
After : "Soccer is best, but liquor is quicker"
CStringT::TrimLeft
Trimmar inledande tecken från strängen.
CStringT& TrimLeft(XCHAR chTarget);
CStringT& TrimLeft(PCXSTR pszTargets);
CStringT& TrimLeft();
Parameterar
chTarget
Måltecknet som ska trimmas.
pszTargets
En pekare till en sträng som innehåller måltecken som ska trimmas. Alla inledande förekomster av tecken i pszTargets kommer att trimmas från CStringT objektet.
Returvärde
Den resulterande trimmade strängen.
Anmärkningar
Tar bort alla inledande och avslutande förekomster av något av följande:
Tecknet som anges av
chTarget.Alla tecken som finns i strängen som anges av
pszTargets.Blanksteg.
Exempel
// 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
Trimmar avslutande tecken från strängen.
CStringT& TrimRight(XCHAR chTarget);
CStringT& TrimRight(PCXSTR pszTargets);
CStringT& TrimRight();
Parameterar
chTarget
Måltecknet som ska trimmas.
pszTargets
En pekare till en sträng som innehåller måltecken som ska trimmas. Alla avslutande förekomster av tecken i pszTargets kommer att trimmas från CStringT objektet.
Returvärde
Returnerar det CStringT objekt som innehåller den trimmade strängen.
Anmärkningar
Tar bort efterföljande förekomster av något av följande:
Tecknet som anges av
chTarget.Alla tecken som finns i strängen som anges av
pszTargets.Blanksteg.
Versionen CStringT& TrimRight(XCHAR chTarget) accepterar en teckenparameter och tar bort alla kopior av det tecknet från slutet av CStringT strängdata. Den börjar från slutet av strängen och fungerar mot framsidan. Den stoppas när den hittar ett annat tecken eller när CStringT det tar slut på teckendata.
Versionen CStringT& TrimRight(PCXSTR pszTargets) accepterar en null-avslutad sträng som innehåller alla olika tecken att söka efter. Den tar bort alla kopior av dessa tecken i CStringT objektet. Den börjar i slutet av strängen och fungerar mot framsidan. Den stoppas när den hittar ett tecken som inte finns i målsträngen eller när CStringT teckendata tar slut. Den försöker inte matcha hela målsträngen med en delsträng i slutet av CStringT.
Versionen CStringT& TrimRight() kräver inga parametrar. Den trimmar eventuella avslutande blankstegstecken från slutet av strängen CStringT . Blankstegstecken kan vara radbrytningar, blanksteg eller flikar.
Exempel
// 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