CStringT Deník
Tato třída reprezentuje CStringT objekt.
Syntaxe
template<typename BaseType, class StringTraits>
class CStringT :
public CSimpleStringT<BaseType,
_CSTRING_IMPL_::_MFCDLLTraitsCheck<BaseType, StringTraits>::c_bIsMFCDLLTraits>
Parametry
BaseType
Typ znaku řetězcové třídy. Může to být jedna z následujících:
char(pro řetězce znaků ANSI).wchar_t(pro řetězce znaků Unicode).TCHAR(pro řetězce znaků ANSI i Unicode).
StringTraits
Určuje, zda třída řetězce vyžaduje podporu knihovny jazyka C Run-Time (CRT) a kde jsou umístěny prostředky řetězců. Může to být jedna z následujících:
StrTraitATL<wchar_t | char | TCHAR, ChTraitsCRT<wchar_t | char | TCHAR>>Třída vyžaduje podporu CRT a hledá řetězce prostředků v modulu určeném
m_hInstResource(členem třídy modulu aplikace).StrTraitATL<wchar_t | char | TCHAR, ChTraitsOS<wchar_t | char |TCHAR>>Třída nevyžaduje podporu CRT a hledá řetězce prostředků v modulu určeném
m_hInstResource(členem třídy modulu aplikace).StrTraitMFC<wchar_t | char | TCHAR, ChTraitsCRT<wchar_t | char | TCHAR>>Třída vyžaduje podporu CRT a hledá řetězce prostředků pomocí standardního vyhledávacího algoritmu MFC.
StrTraitMFC<wchar_t | char | TCHAR, ChTraitsOS<wchar_t | char | TCHAR>>Třída nevyžaduje podporu CRT a hledá řetězce prostředků pomocí standardního vyhledávacího algoritmu MFC.
Členové
Veřejné konstruktory
| Název | Popis |
|---|---|
CStringT::CStringT |
Sestaví CStringT objekt různými způsoby. |
CStringT::~CStringT |
Odstraní CStringT objekt. |
Veřejné metody
| Název | Popis |
|---|---|
CStringT::AllocSysString |
Přidělí BSTR data z CStringT dat. |
CStringT::AnsiToOem |
Provede místní převod ze znakové sady ANSI na znakovou sadu OEM. |
CStringT::AppendFormat |
Připojí formátovaná data k existujícímu CStringT objektu. |
CStringT::Collate |
Porovná dva řetězce (rozlišuje velká a malá písmena, používá informace specifické pro národní prostředí). |
CStringT::CollateNoCase |
Porovná dva řetězce (bez rozlišení velkých a malých písmen, používá informace specifické pro národní prostředí). |
CStringT::Compare |
Porovná dva řetězce (rozlišuje velká a malá písmena). |
CStringT::CompareNoCase |
Porovná dva řetězce (bez rozlišení velkých a malých písmen). |
CStringT::Delete |
Odstraní znak nebo znaky z řetězce. |
CStringT::Find |
Vyhledá znak nebo podřetězec uvnitř většího řetězce. |
CStringT::FindOneOf |
Vyhledá první shodný znak ze sady. |
CStringT::Format |
Zformátuje řetězec jako sprintf . |
CStringT::FormatMessage |
Formátuje řetězec zprávy. |
CStringT::FormatMessageV |
Formátuje řetězec zprávy pomocí seznamu argumentů proměnných. |
CStringT::FormatV |
Zformátuje řetězec pomocí seznamu proměnných argumentů. |
CStringT::GetEnvironmentVariable |
Nastaví řetězec na hodnotu zadané proměnné prostředí. |
CStringT::Insert |
Vloží jeden znak nebo podřetězec na daný index v rámci řetězce. |
CStringT::Left |
Extrahuje levou část řetězce. |
CStringT::LoadString |
načte existující CStringT objekt z Windows prostředku. |
CStringT::MakeLower |
Převede všechny znaky v tomto řetězci na malá písmena. |
CStringT::MakeReverse |
Obrátí řetězec. |
CStringT::MakeUpper |
Převede všechny znaky v tomto řetězci na velká písmena. |
CStringT::Mid |
Extrahuje střední část řetězce. |
CStringT::OemToAnsi |
Provede místní převod ze znakové sady OEM na znakovou sadu ANSI. |
CStringT::Remove |
Odebere označené znaky z řetězce. |
CStringT::Replace |
Nahradí označené znaky dalšími znaky. |
CStringT::ReverseFind |
Najde znak uvnitř většího řetězce; začíná od konce. |
CStringT::Right |
Extrahuje pravou část řetězce. |
CStringT::SetSysString |
Nastaví existující BSTR objekt s daty z CStringT objektu. |
CStringT::SpanExcluding |
Extrahuje znaky z řetězce počínaje prvním znakem, který není v sadě znaků identifikovaných pszCharSet . |
CStringT::SpanIncluding |
Extrahuje podřetězec, který obsahuje pouze znaky v sadě. |
CStringT::Tokenize |
Extrahuje zadané tokeny do cílového řetězce. |
CStringT::Trim |
Ořízne všechny úvodní a koncové prázdné znaky z řetězce. |
CStringT::TrimLeft |
Ořízne z řetězce úvodní prázdné znaky. |
CStringT::TrimRight |
Ořízne v řetězci koncové prázdné znaky. |
Operátory
| Název | Popis |
|---|---|
CStringT::operator = |
Přiřadí novou hodnotu CStringT objektu. |
CStringT::operator + |
Zřetězí dva řetězce, nebo znak a řetězec. |
CStringT::operator += |
Zřetězí nový řetězec na konec existujícího řetězce. |
CStringT::operator == |
Určuje, zda jsou dva řetězce logicky stejné. |
CStringT::operator != |
Určuje, zda jsou dva řetězce logicky stejné. |
CStringT::operator < |
Určuje, zda je řetězec na levé straně operátoru menší než řetězec na pravé straně. |
CStringT::operator > |
Určuje, zda je řetězec na levé straně operátoru větší než řetězec na pravé straně. |
CStringT::operator <= |
Určuje, zda je řetězec na levé straně operátoru menší než nebo roven řetězci na pravé straně. |
CStringT::operator >= |
Určuje, zda je řetězec na levé straně operátoru větší než nebo roven řetězci na pravé straně. |
Poznámky
CStringTdědí z CStringT. Pokročilé funkce, jako je například manipulace se znaky, řazení a hledání, jsou implementovány nástrojem CStringT .
Poznámka
CStringT objekty jsou schopny vyvolávání výjimek. K tomu dochází, když z jakéhokoli důvodu dojde k vykonání CStringT objektu z nějaké paměti.
CStringTObjekt se skládá z sekvence znaků s proměnlivou délkou. CStringT poskytuje funkce a operátory pomocí syntaxe, která je podobná syntaxi Basic. Operátory zřetězení a porovnávání, společně s zjednodušenou správou paměti, usnadňují CStringT používání objektů než běžných polí znaků.
Poznámka
I když je možné vytvořit CStringT instance, které obsahují vložené znaky null, doporučujeme proti ní. Volání metod a operátorů na CStringT objekty, které obsahují vložené znaky null, mohou způsobit neočekávané výsledky.
Pomocí různých kombinací BaseTypeStringTraits parametrů a CStringT mohou objekty přijít do následujících typů, které byly předdefinované knihovnami ATL.
Při použití v aplikaci ATL:
CString, CStringA , a CStringW jsou exportovány z knihovny MFC dll (MFC90.DLL), nikdy z knihoven DLL uživatele. Tím se zabrání CStringT v definování víckrát.
Poznámka
Pokud váš kód obsahuje alternativní řešení pro chyby linkeru, které jsou popsány v tématu Export třídy řetězců pomocí CStringT, měli byste tento kód odebrat. Už není zapotřebí.
V aplikacích založených na knihovně MFC jsou k dispozici následující typy řetězců:
| CStringt – typ | Deklarace |
|---|---|
CStringA |
Řetězec typu znaku ANSI s podporou CRT. |
CStringW |
Řetězec typu znaku Unicode s podporou CRT. |
CString |
Typy znaků ANSI i Unicode s podporou CRT. |
Následující typy řetězců jsou k dispozici v projektech, kde ATL_CSTRING_NO_CRT je definována:
| CStringt – typ | Deklarace |
|---|---|
CAtlStringA |
Řetězec typu znaků ANSI bez podpory CRT. |
CAtlStringW |
Řetězec typu znaku Unicode bez podpory CRT. |
CAtlString |
Typy znaků ANSI i Unicode bez podpory CRT. |
Následující typy řetězců jsou k dispozici v projektech, kde ATL_CSTRING_NO_CRT nejsou definovány:
| CStringt – typ | Deklarace |
|---|---|
CAtlStringA |
Řetězec typu znaku ANSI s podporou CRT. |
CAtlStringW |
Řetězec typu znaku Unicode s podporou CRT. |
CAtlString |
Typy znaků ANSI i Unicode s podporou CRT. |
CString objekty mají také následující vlastnosti:
CStringTobjekty mohou růst z důvodu operací zřetězení.CStringTobjekty následují jako "sémantika hodnoty".CStringTObjekt si můžete představit jako skutečný řetězec, nikoli jako ukazatel na řetězec.Můžete volně dosadit
CStringTobjekty proPCXSTRargumenty funkce.Vlastní Správa paměti pro vyrovnávací paměti řetězců. Další informace najdete v tématu Správa paměti a .
Předdefinované typy CStringt
Vzhledem k tomu CStringT , že používá argument šablony pro definování typu znaku (buď wchar_t nebo char ), typy parametrů metody mohou být složité v časech. Pro zjednodušení tohoto problému je definována sada předdefinovaných typů, která se používá v celé CStringT třídě. V následující tabulce jsou uvedeny různé typy:
| Název | Popis |
|---|---|
XCHAR |
Jeden znak (buď wchar_t nebo char ) se stejným typem znaku jako CStringT objekt. |
YCHAR |
Jeden znak (buď wchar_t nebo char ) s typem opačného znaku jako CStringT objekt. |
PXSTR |
Ukazatel na řetězec znaků (buď wchar_t nebo char ) se stejným typem znaku jako CStringT objekt. |
PYSTR |
Ukazatel na řetězec znaků (buď wchar_t nebo char ) s typem opačného znaku jako CStringT objekt. |
PCXSTR |
Ukazatel na const řetězec znaků (buď wchar_t nebo char ) se stejným typem znaku jako CStringT objekt. |
PCYSTR |
Ukazatel na const řetězec znaků (buď wchar_t nebo char ) s typem opačného znaku jako CStringT objekt. |
Poznámka
Kód, který dříve používal nedokumentované metody CString (například AssignCopy ), musí být nahrazen kódem, který používá následující dokumentované metody CStringT (například GetBuffer nebo ReleaseBuffer ). Tyto metody jsou zděděné z CSimpleStringT .
Hierarchie dědičnosti
CStringT
Požadavky
| Hlavička | Použití pro |
|---|---|
cstringt.h |
Řetězcové objekty pouze MFC |
atlstr.h |
Objekty řetězce bez knihovny MFC |
CStringT::AllocSysString
Přidělí řetězec kompatibilní s automatizací typu BSTR a zkopíruje CStringT do něj obsah objektu, včetně ukončujícího znaku null.
BSTR AllocSysString() const;
Návratová hodnota
Nově přidělený řetězec.
Poznámky
V programech MFC je Třída vyvolána, pokud existuje nedostatek paměti. V programech ATL CAtlException je vyvolána výjimka. Tato funkce se obvykle používá k vrácení řetězců pro automatizaci.
Obecně platí, že pokud je tento řetězec předán funkci modelu COM jako [in] parametr, pak vyžaduje volající uvolnění řetězce. to lze provést pomocí SysFreeString , jak je popsáno v Windows SDK. Další informace najdete v tématu přidělování a uvolňování paměti pro .
další informace o funkcích alokace OLE v Windows naleznete v části SysAllocString v Windows SDK.
Příklad
Následující příklad ukazuje použití 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
Převede všechny znaky v tomto CStringT objektu ze znakové sady ANSI na znakovou sadu OEM.
void AnsiToOem();
Poznámky
Funkce není k dispozici, pokud _UNICODE je definována.
Příklad
// 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
Připojí formátovaná data k existujícímu CStringT objektu.
void __cdecl AppendFormat(PCXSTR pszFormat, [, argument] ...);
void __cdecl AppendFormat(UINT nFormatID, [, argument] ...);
Parametry
pszFormat
Řetězec řízení formátu.
nFormatID
Identifikátor prostředku řetězce, který obsahuje řetězec řízení formátu.
argument
Volitelné argumenty
Poznámky
Tato funkce formátuje a připojuje řadu znaků a hodnot v CStringT . Každý volitelný argument (pokud existuje) je převeden a připojen podle odpovídající specifikace formátu v pszFormat nebo z prostředku řetězce identifikovaného nFormatID .
Příklad
// 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
Porovná dva řetězce pomocí funkce obecného textu _tcscoll .
int Collate(PCXSTR psz) const throw();
Parametry
psz
Druhý řetězec použitý pro porovnání.
Návratová hodnota
Nula, pokud jsou řetězce identické, < 0, pokud CStringT je tento objekt menší psz nebo > 0, pokud CStringT je tento objekt větší než psz .
Poznámky
Funkce obecného textu _tcscoll , která je definována v, je TCHAR.H mapována na buď strcoll , wcscoll nebo _mbscoll , v závislosti na znakové sadě, která je definována v době kompilace. Každá funkce rozlišuje velká a malá písmena řetězců podle znakové stránky, která se právě používá. Další informace naleznete v tématu , wcscoll , _mbscoll , _strcoll_l , _wcscoll_l , _mbscoll_l.
CStringT::CollateNoCase
Porovná dva řetězce pomocí funkce obecného textu _tcscoll .
int CollateNoCase(PCXSTR psz) const throw();
Parametry
psz
Druhý řetězec použitý pro porovnání.
Návratová hodnota
Nula, pokud jsou řetězce identické (ignorování velkých a malých písmen), < 0, pokud CStringT je tento objekt menší než psz (ignorování velkých a malých písmen), nebo > 0, pokud CStringT je tento objekt větší než psz (ignorování velkých a malých písmen).
Poznámky
Funkce obecného textu _tcscoll , která je definována v, je TCHAR.H mapována na buď stricoll , wcsicoll nebo _mbsicoll , v závislosti na znakové sadě, která je definována v době kompilace. Každá funkce provede porovnání řetězců bez rozlišování velkých a malých písmen, podle znakové stránky, která se právě používá. Další informace naleznete v tématu , wcscoll , _mbscoll , _strcoll_l , _wcscoll_l , _mbscoll_l.
Příklad
// 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
Porovná dva řetězce (rozlišuje velká a malá písmena).
int Compare(PCXSTR psz) const;
Parametry
psz
Druhý řetězec použitý pro porovnání.
Návratová hodnota
Nula, pokud jsou řetězce identické, < 0, pokud CStringT je tento objekt menší psz nebo > 0, pokud CStringT je tento objekt větší než psz .
Poznámky
Funkce obecného textu _tcscmp , která je definována v, je TCHAR.H mapována na buď strcmp , wcscmp nebo _mbscmp , v závislosti na znakové sadě, která je definována v době kompilace. Každá funkce rozlišuje velká a malá písmena řetězců a není ovlivněna národním prostředím. Další informace naleznete v tématu , wcscmp , _mbscmp.
Pokud řetězec obsahuje vložené hodnoty null, pro účely porovnání je řetězec považován za zkrácený při prvním vloženém znaku null.
Příklad
Následující příklad ukazuje použití 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
Porovná dva řetězce (bez rozlišení velkých a malých písmen).
int CompareNoCase(PCXSTR psz) const throw();
Parametry
psz
Druhý řetězec použitý pro porovnání.
Návratová hodnota
Nula, pokud jsou řetězce identické (ignorování velkých a malých písmen), < 0, pokud CStringT je tento objekt menší než psz (ignorování velkých a malých písmen), nebo > 0, pokud CStringT je tento objekt větší než psz (ignorování velkých a malých písmen).
Poznámky
Funkce obecného textu, která je definována v , se mapuje na , nebo , v závislosti na znakové sadě, která _tcsicmpTCHAR.H je _stricmp_wcsicmp_mbsicmp definována v době kompilace. Každá funkce neprovádá porovnání řetězců bez rozlišení velkých a malých písmen. Porovnání závisí na LC_CTYPE aspektu národního prostředí, ale ne na LC_COLLATE . Další informace najdete v tématu , , , , _wcsicmp_mbsicmp , _stricmp_l_wcsicmp_l . _mbsicmp_l
Příklad
// 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
Vytvoří 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);
Parametry
pch
Ukazatel na pole znaků o délce nLength , nikoli na hodnotu null ukončenou.
nLength
Počet znaků v pch .
ch
Jeden znak.
pszSrc
Řetězec zakončený hodnotou null, který se má zkopírovat do tohoto CStringT objektu.
pStringMgr
Ukazatel na správce paměti pro CStringT objekt. Další informace o správě paměti IAtlStringMgr pro najdete v tématu Správa paměti pomocí CStringTIAtlStringMgr
strSrc
Existující CStringT objekt, který se má zkopírovat do tohoto CStringT objektu. Další informace o a CThisStringCThisSimpleString najdete v části Poznámky.
varSrc
Variantní objekt, který má být zkopírován do tohoto CStringT objektu.
BaseType
Typ znaku třídy řetězce. Může to být jedna z následujících možností:
char (pro řetězce znaků ANSI).
wchar_t (pro řetězce znaků Unicode).
TCHAR (pro řetězce znaků ANSI i Unicode).
bMFCDLL
Logická hodnota, která určuje, zda je projekt knihovny MFC DLL ( TRUE ) nebo ne ( FALSE ).
SystemString
Musí být System::String a projekt musí být zkompilován pomocí /clr .
pString
Popisovač CStringT objektu.
Poznámky
Vzhledem k tomu, že konstruktory zkopírují vstupní data do nového přiděleného úložiště, může dojít k výjimce paměti. Některé z těchto konstruktorů slouží jako převodní funkce. To vám umožní nahradit například objekt , LPTSTR kde CStringT se očekává objekt.
CStringT(LPCSTRlpsz): Vytvoří unicode zCStringTřetězce ANSI. Tento konstruktor můžete použít také k načtení řetězcového prostředku, jak je znázorněno v následujícím příkladu.CStringT(LPCWSTRlpsz): Vytvoří zCStringTřetězce Unicode.CStringT(const unsigned char*psz): Umožňuje vytvořit objekt z ukazateleCStringTnaunsigned char.
Poznámka
Definujte _CSTRING_DISABLE_NARROW_WIDE_CONVERSION makro pro vypnutí implicitního převodu řetězců mezi řetězci ANSI a Unicode. Makro je vyloučeno z kompilačních konstruktorů, které podporují převod.
Parametr strSrc může být buď objekt , nebo CStringTCThisSimpleString . Pro CStringT použijte jednu z jeho výchozích instancí ( , nebo ); pro použijte CStringCStringACStringWCThisSimpleStringthis ukazatel. CThisSimpleStringdeklaruje instanci CThisSimpleString, což je menší řetězcová třída s méně integrovanou funkcí než CStringT třída .
Operátor přetížení CSimpleStringT<>&() vytvoří objekt z CStringTCSimpleStringT deklarace.
Poznámka
I když je možné vytvořit instance, které obsahují vložené CStringT znaky null, doporučujeme proti nim použít . Volání metod a operátorů u CStringT objektů, které obsahují vložené znaky null, může způsobit nezamýšlené výsledky.
Příklad
// 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
Zničí CStringT objekt .
~CStringT() throw();
Poznámky
Zničí CStringT objekt .
CStringT::Delete
Odstraní znak nebo znaky z řetězce začínajícího znakem v daném indexu.
int Delete(int iIndex, int nCount = 1);
Parametry
iIndex
Index prvního znaku v objektu, který se má odstranit, od CStringT nuly.
nCount
Počet znaků, které se má odebrat.
Návratová hodnota
Délka změněných řetězců.
Poznámky
Pokud nCount je hodnota delší než řetězec, zbytek řetězce se odebere.
Příklad
// 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
Vyhledá v tomto řetězci první shodu znaku nebo podřetězce.
int Find(PCXSTR pszSub, int iStart=0) const throw();
int Find(XCHAR ch, int iStart=0) const throw();
Parametry
pszSub
Podřetězec, který se má vyhledat.
iStart
Index znaku v řetězci, se který má začít hledat, nebo 0 pro začátek od začátku.
ch
Jeden znak, který se má vyhledat.
Návratová hodnota
Index prvního znaku v tomto objektu od nuly, který odpovídá požadovanému podřetězci nebo znakům; -1, pokud nebyl nalezen podřetězec CStringT nebo znak.
Poznámky
Funkce je přetížená tak, aby přijímal jednotlivé znaky (podobně jako funkce za běhu) i řetězce strchr (podobně jako strstr ).
Příklad
// 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
Vyhledá v tomto řetězci první znak, který odpovídá libovolnému znaku obsaženému v pszCharSet .
int FindOneOf(PCXSTR pszCharSet) const throw();
Parametry
pszCharSet
Řetězec obsahující znaky pro porovnávání.
Návratová hodnota
Index prvního znaku v tomto řetězci založený na nule, který je také v řetězci pszCharSet ; -1, pokud není nalezena žádná shoda.
Poznámky
Vyhledá první výskyt jakéhokoli znaku v pszCharSet .
Příklad
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.FindOneOf(_T("xd")) == 3); // 'd' is first match
CStringT::Format
Zapisuje formátovaná data do objektu stejným způsobem, který formátuje data do pole znaků CStringTsprintf_s ve stylu jazyka C.
void __cdecl Format(UINT nFormatID, [, argument]...);
void __cdecl Format(PCXSTR pszFormat, [, argument] ...);
Parametry
nFormatID
Identifikátor prostředku řetězce, který obsahuje řetězec pro řízení formátu.
pszFormat
Řetězec pro řízení formátu.
argument
Volitelné argumenty
Poznámky
Tato funkce formátuje a ukládá řadu znaků a hodnot v CStringT objektu . Každý volitelný argument (pokud existuje) se převede a vystupuje podle odpovídající specifikace formátu v řetězci nebo z prostředku pszFormat řetězce identifikované parametrem nFormatID .
Volání selže, pokud je samotný objekt řetězce nabízen jako parametr pro Format . Například následující kód způsobí nepředvídatelné výsledky:
CAtlString str = _T("Some Data");
str.Format(_T("%s%d"), str, 123);
// Attention: str is also used in the parameter list.
Další informace najdete v tématu Syntaxe specifikace formátu: a wprintf Funkce.
Příklad
// 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
Formátuje řetězec zprávy.
void __cdecl FormatMessage(UINT nFormatID, [, argument]...);
void __cdecl FormatMessage(PCXSTR pszFormat, [, argument]...);
Parametry
nFormatID
Identifikátor prostředku řetězce, který obsahuje neformátovaný text zprávy.
pszFormat
Odkazuje na řídicí řetězec formátu. Naskenuje se vložení a naformátuje se odpovídajícím způsobem. Formátovací řetězec se podobá řetězcům formátu funkce run-time -style s tím rozdílem, že umožňuje vkládání parametrů printf v libovolném pořadí.
argument
Volitelné argumenty
Poznámky
Funkce vyžaduje jako vstup definici zprávy. Definice zprávy je určena pomocí pszFormat nebo z řetězcového prostředku identifikované pomocí nFormatID . Funkce zkopíruje formátovaný text zprávy do objektu a v případě požadavku zkopíruje všechny vložené CStringT sekvence vložení.
Poznámka
FormatMessage se pokusí pro nově naformátovaný řetězec přidělit systémovou paměť. Pokud tento pokus selže, je automaticky vyvolána výjimka paměti.
Každé vložení musí mít odpovídající parametr za pszFormat parametrem nFormatID nebo . V textu zprávy je několik řídicích sekvencí podporováno pro dynamické formátování zprávy. další informace najdete v tématu funkce Windows FormatMessage v Windows SDK.
Příklad
// 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
Formátuje řetězec zprávy pomocí seznamu argumentů proměnných.
void FormatMessageV(PCXSTR pszFormat, va_list* pArgList);
Parametry
pszFormat
Odkazuje na řetězec řízení formátu. Bude prohledáván pro odpovídající vložení a formátování. Formátovací řetězec je podobný printf formátovacím řetězcům ve stylu běhu, s výjimkou umožňuje vložení parametrů v libovolném pořadí.
pArgList
Ukazatel na seznam argumentů.
Poznámky
Funkce vyžaduje definici zprávy jako vstup, kterou Určuje pszFormat . Funkce zkopíruje text formátované zprávy a seznam argumentů s proměnnými do CStringT objektu a zpracovává všechny vložené sekvence vložení, pokud je to požadováno.
Poznámka
FormatMessageV volání CStringT::FormatMessage , která se pokusí přidělit systémovou paměť nově formátovanému řetězci. Pokud tento pokus neproběhne úspěšně, dojde k automatickému vyvolání výjimky paměti.
další informace najdete v tématu funkce Windows FormatMessage v Windows SDK.
CStringT::FormatV
Formátuje řetězec zprávy pomocí seznamu argumentů proměnných.
void FormatV(PCXSTR pszFormat, va_list args);
Parametry
pszFormat
Odkazuje na řetězec řízení formátu. Bude prohledáván pro odpovídající vložení a formátování. Formátovací řetězec je podobný printf formátovacím řetězcům ve stylu běhu, s výjimkou umožňuje vložení parametrů v libovolném pořadí.
args
Ukazatel na seznam argumentů.
Poznámky
Zapíše formátovaný řetězec a seznam proměnných argumentů do CStringT řetězce stejným způsobem, který vsprintf_s formátuje data do pole znaků ve stylu jazyka C.
Příklad
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
Nastaví řetězec na hodnotu zadané proměnné prostředí.
BOOL GetEnvironmentVariable(PCXSTR pszVar);
Parametry
pszVar
Ukazatel na řetězec zakončený hodnotou null, který určuje proměnnou prostředí.
Návratová hodnota
Nenulové, pokud bylo úspěšné; v opačném případě 0.
Poznámky
Načte hodnotu zadané proměnné z bloku prostředí volajícího procesu. Hodnota je ve formátu řetězce znaků zakončeného hodnotou null.
Příklad
// 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
Vloží jeden znak nebo podřetězec na daný index v rámci řetězce.
int Insert(int iIndex, PCXSTR psz);
int Insert(int iIndex, XCHAR ch);
Parametry
iIndex
Index znaku, před kterým bude provedeno vkládání.
psz
Ukazatel na dílčí řetězec, který má být vložen.
ch
Znak, který má být vložen.
Návratová hodnota
Délka změněného řetězce.
Poznámky
iIndexParametr určuje první znak, který bude přesunut, aby uvolnil místo pro daný znak nebo podřetězec. Pokud nIndex je nula, vložení proběhne před celým řetězcem. Pokud je nIndex větší než délka řetězce, funkce bude zřetězit aktuální řetězec a nový materiál poskytnutý buď nebo psz .
Příklad
// 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
Extrahuje nCount z tohoto objektu znaky umístěné nejvíce vlevo CStringT a vrátí kopii extrahované podřetězce.
CStringT Left(int nCount) const;
Parametry
nCount
Počet znaků, které mají být z tohoto CStringT objektu extrahovány.
Návratová hodnota
CStringTObjekt, který obsahuje kopii zadaného rozsahu znaků. Vrácený CStringT objekt může být prázdný.
Poznámky
Pokud nCount přesahuje délku řetězce, je extrahován celý řetězec. Left je podobný základní Left funkci.
U vícebajtových znakových sad (MBCS) nCount zpracovává každou 8bitové sekvenci jako znak, takže nCount vrátí počet vícebajtových znaků vynásobený dvěma.
Příklad
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Left(2) == _T("ab"));
CStringT::LoadString
přečte prostředek Windowsového řetězce identifikovaný nIDdo existujícího objektu.
BOOL LoadString(HINSTANCE hInstance, UINT nID, WORD wLanguageID);
BOOL LoadString(HINSTANCE hInstance, UINT nID);
BOOL LoadString(UINT nID);
Parametry
hInstance
Popisovač instance modulu.
nID
ID prostředku Windowsového řetězce.
wLanguageID
Jazyk řetězcového prostředku.
Návratová hodnota
Nenulové, pokud bylo zatížení prostředku úspěšné; v opačném případě 0.
Poznámky
Načte prostředek řetězce ( nID ) ze zadaného modulu () hInstance pomocí zadaného jazyka ( wLanguage ).
Příklad
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s;
s.LoadString(IDS_APP_TITLE);
CStringT::MakeLower
Převede CStringT objekt na malý řetězec.
CStringT& MakeLower();
Návratová hodnota
Výsledný řetězec malými písmeny.
Příklad
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("ABC"));
ASSERT(s.MakeLower() == _T("abc"));
CStringT::MakeReverse
Obrátí pořadí znaků v CStringT objektu.
CStringT& MakeReverse();
Návratová hodnota
Výsledný stornovaný řetězec.
Příklad
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abc"));
ASSERT(s.MakeReverse() == _T("cba"));
CStringT::MakeUpper
Převede CStringT objekt na řetězec na velká písmena.
CStringT& MakeUpper();
Návratová hodnota
Výsledný řetězec na velká písmena.
Poznámky
Příklad
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abc"));
ASSERT(s.MakeUpper() == _T("ABC"));
CStringT::Mid
Extrahuje podřetězec znaků délky nCount z tohoto CStringT objektu, počínaje pozicí (počítáno od iFirst nuly).
CStringT Mid(int iFirst, int nCount) const;
CStringT Mid(int iFirst) const;
Parametry
iFirst
Index založený na nule prvního znaku v tomto CStringT objektu, který má být zahrnut do extrahovaný podřetězec.
nCount
Počet znaků, které mají být z tohoto CStringT objektu extrahovány. Pokud tento parametr není zadán, bude extrahována zbývající část řetězce.
Návratová hodnota
CStringTObjekt, který obsahuje kopii zadaného rozsahu znaků. Vrácený CStringT objekt může být prázdný.
Poznámky
Funkce vrátí kopii extrahované podřetězce. Mid je podobný základní funkci Mid (s výjimkou toho, že indexy jsou založeny na bázi Basic).
Pro vícebajtové znakové sady (MBCS) nCount odkazuje na každý 8bitový znak; to znamená, že vedoucí a koncový bajt v jednom vícebajtovém znaku jsou počítány jako dva znaky.
Příklad
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Mid(2, 3) == _T("cde"));
CStringT::OemToAnsi
Převede všechny znaky v tomto CStringT objektu ze znakové sady OEM na znakovou sadu ANSI.
void OemToAnsi();
Poznámky
Tato funkce není k dispozici _UNICODE , pokud je definována.
Příklad
Podívejte se na příklad pro CStringT::AnsiToOem .
CStringT::operator =
Přiřadí k řetězci novou hodnotu.
CStringT& operator=(const CStringT& strSrc);
template<bool bMFCDLL>
CStringT& operator=(const CSimpleStringT<BaseType, bMFCDLL>& str);
CStringT& operator=(PCXSTR pszSrc);
CStringT& operator=(PCYSTR pszSrc);
CStringT& operator=(const unsigned char* pszSrc);
CStringT& operator=(XCHAR ch);
CStringT& operator=(YCHAR ch);
CStringT& operator=(const VARIANT& var);
Parametry
strSrc
K CStringT přiřazení k tomuto řetězci.
str
Odkaz na CThisSimpleString objekt.
bMFCDLL
Logická hodnota určující, zda je projekt knihovny MFC DLL, nebo ne.
BaseType
Základní typ řetězce
var
Variantní objekt, který se má tomuto řetězci přiřadit.
ch
Znak ANSI nebo Unicode pro přiřazení k řetězci.
pszSrc
Ukazatel na původní přiřazený řetězec.
Poznámky
Operátor přiřazení přijímá jiný CStringT objekt, ukazatel na znak nebo jeden znak. K výjimce paměti může dojít při každém použití tohoto operátoru, protože je možné přidělit nové úložiště.
Informace o najdete CThisSimpleString v části Poznámky v tématu CStringT::CStringT .
Poznámka
I když je možné vytvořit instance, které obsahují vložené CStringT znaky null, doporučujeme proti nim použít . Volání metod a operátorů u CStringT objektů, které obsahují vložené znaky null, může způsobit nezamýšlené výsledky.
CStringT::operator +
Zřetězí dva řetězce nebo znak a řetězec.
friend CStringT operator+(const CStringT& str1, const CStringT& str2);
friend CStringT operator+(const CStringT& str1, PCXSTR psz2);
friend CStringT operator+(PCXSTR psz1, const CStringT& str2,);
friend CStringT operator+(char ch1, const CStringT& str2,);
friend CStringT operator+(const CStringT& str1, char ch2);
friend CStringT operator+(const CStringT& str1, wchar_t ch2);
friend CStringT operator+(wchar_t ch1, const CStringT& str2,);
Parametry
ch1
Znak ANSI nebo Unicode pro zřetězit s řetězcem.
ch2
Znak ANSI nebo Unicode pro zřetězit s řetězcem.
str1
Pro CStringT zřetězit s řetězcem nebo znakem.
str2
Pro CStringT zřetězit s řetězcem nebo znakem.
psz1
Ukazatel na řetězec zakončený hodnotou null pro zřetězit s řetězcem nebo znakem.
psz2
Ukazatel na řetězec, který se má zřetězit s řetězcem nebo znakem.
Poznámky
Funkce má sedm forem CStringT::operator+ přetížení. První verze zřetězí dva existující CStringT objekty. Další dva objekty zřetězují CStringT a řetězec ukončený hodnotou null. Další dvě zřetězit objekt a CStringT znak ANSI. Poslední dvě zřetězit objekt CStringT a znak Unicode.
Poznámka
I když je možné vytvořit instance, které obsahují vložené CStringT znaky null, doporučujeme proti nim použít . Volání metod a operátorů u CStringT objektů, které obsahují vložené znaky null, může způsobit nezamýšlené výsledky.
Příklad
// 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 +=
Zřetězí znaky na konec řetězce.
CStringT& operator+=(const CThisSimpleString& str);
template<bool bMFCDLL>
CStringT& operator+=(const const CSimpleStringT<BaseType, bMFCDLL>& str);
template<int t_nSize>
CStringT& operator+=(const CStaticString<XCHAR, t_nSize>& strSrc);
CStringT& operator+=(PCXSTR pszSrc);
CStringT& operator+=(PCYSTR pszSrc);
CStringT& operator+=(char ch);
CStringT& operator+=(unsigned char ch);
CStringT& operator+=(wchar_t ch);
CStringT& operator+=(const VARIANT& var);
Parametry
str
Odkaz na CThisSimpleString objekt.
bMFCDLL
Logická hodnota určující, zda je projekt knihovny MFC DLL, nebo ne.
BaseType
Základní typ řetězce
var
Variantní objekt, který se má zřetězit s tímto řetězcem.
ch
Znak ANSI nebo Unicode pro zřetězit s řetězcem.
pszSrc
Ukazatel na původní zřetězovaný řetězec.
strSrc
Pro CStringT zřetězit s tímto řetězcem.
Poznámky
Operátor přijímá jiný CStringT objekt, ukazatel na znak nebo jeden znak. K výjimce paměti může dojít vždy, když použijete tento operátor zřetězení, protože pro znaky přidané do tohoto objektu lze přidělit nové CStringT úložiště.
Informace o najdete CThisSimpleString v části Poznámky v tématu CStringT::CStringT .
Poznámka
I když je možné vytvořit instance, které obsahují vložené CStringT znaky null, doporučujeme proti nim použít . Volání metod a operátorů u CStringT objektů, které obsahují vložené znaky null, může způsobit nezamýšlené výsledky.
Příklad
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abc"));
ASSERT((s += _T("def")) == _T("abcdef"));
CStringT::operator ==
Určuje, zda jsou dva řetězce logicky stejné.
friend bool operator==(const CStringT& str1, const CStringT& str2) throw();
friend bool operator==(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator==(const CStringT& str1, PCYSTR psz2) throw();
friend bool operator==(const CStringT& str1, XCHAR ch2) throw();
friend bool operator==(PCXSTR psz1, const CStringT& str2) throw();
friend bool operator==(PCYSTR psz1, const CStringT& str2,) throw();
friend bool operator==(XCHAR ch1, const CStringT& str2,) throw();
Parametry
ch1
Znak ANSI nebo Unicode pro porovnání.
ch2
Znak ANSI nebo Unicode pro porovnání.
str1
A CStringT pro porovnání.
str2
A CStringT pro porovnání.
psz1
Ukazatel na řetězec zakončený hodnotou null pro porovnání.
psz2
Ukazatel na řetězec zakončený hodnotou null pro porovnání.
Poznámky
Otestuje, jestli se řetězec nebo znak na levé straně rovná řetězci nebo znaku na pravé straně, a vrátí TRUE nebo FALSE odpovídajícím způsobem.
Příklad
// 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 !=
Určuje, zda jsou dva řetězce logicky nerovny.
friend bool operator!=(const CStringT& str1, const CStringT& str2) throw();
friend bool operator!=(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator!=(const CStringT& str1, PCYSTR psz2) throw();
friend bool operator!=(const CStringT& str1, XCHAR ch2) throw();
friend bool operator!=(PCXSTR psz1, const CStringT& str2) throw();
friend bool operator!=(PCYSTR psz1, const CStringT& str2,) throw();
friend bool operator!=(XCHAR ch1, const CStringT& str2,) throw();
Parametry
ch1
Znak ANSI nebo Unicode pro zřetězit s řetězcem.
ch2
Znak ANSI nebo Unicode pro zřetězit s řetězcem.
str1
A CStringT pro porovnání.
str2
A CStringT pro porovnání.
psz1
Ukazatel na řetězec zakončený hodnotou null pro porovnání.
psz2
Ukazatel na řetězec zakončený hodnotou null pro porovnání.
Poznámky
Testuje, jestli se řetězec nebo znak na levé straně nerovná řetězci nebo znaku na pravé straně.
Příklad
// 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 <
Určuje, zda je řetězec na levé straně operátoru menší než řetězec na pravé straně.
friend bool operator<(const CStringT& str1, const CStringT& str2) throw();
friend bool operator<(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator<(PCXSTR psz1, const CStringT& str2) throw();
Parametry
str1
A CStringT pro porovnání.
str2
A CStringT pro porovnání.
psz1
Ukazatel na řetězec zakončený hodnotou null pro porovnání.
psz2
Ukazatel na řetězec zakončený hodnotou null pro porovnání.
Poznámky
Lexikografické porovnání řetězců, znak po znaku, dokud:
Najde dva odpovídající znaky nerovné a výsledek jejich porovnání se posouvá jako výsledek porovnání mezi řetězci.
Nenajde žádné nerovnosti, ale jeden řetězec má více znaků než druhý a kratší řetězec je považován za menší než delší řetězec.
Nenajde žádné nerovnosti a zjistí, že řetězce mají stejný počet znaků, a proto se řetězce rovnají.
Příklad
// 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 >
Určuje, zda je řetězec na levé straně operátoru větší než řetězec na pravé straně.
friend bool operator>(const CStringT& str1, const CStringT& str2) throw();
friend bool operator>(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator>(PCXSTR psz1, const CStringT& str2) throw();
Parametry
str1
A CStringT pro porovnání.
str2
A CStringT pro porovnání.
psz1
Ukazatel na řetězec zakončený hodnotou null pro porovnání.
psz2
Ukazatel na řetězec zakončený hodnotou null pro porovnání.
Poznámky
Lexikografické porovnání řetězců, znak po znaku, dokud:
Najde dva odpovídající znaky nerovné a výsledek jejich porovnání se posouvá jako výsledek porovnání mezi řetězci.
Nenajde žádné nerovnosti, ale jeden řetězec má více znaků než druhý a kratší řetězec je považován za menší než delší řetězec.
Nenajde žádné nerovnosti a zjistí, že řetězce mají stejný počet znaků, takže řetězce jsou si rovny.
Příklad
// 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 <=
Určuje, zda je řetězec na levé straně operátoru menší nebo roven řetězci na pravé straně.
friend bool operator<=(const CStringT& str1, const CStringT& str2) throw();
friend bool operator<=(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator<=(PCXSTR psz1, const CStringT& str2) throw();
Parametry
str1
A CStringT pro porovnání.
str2
A CStringT pro porovnání.
psz1
Ukazatel na řetězec zakončený hodnotou null pro porovnání.
psz2
Ukazatel na řetězec zakončený hodnotou null pro porovnání.
Poznámky
Lexicographical porovnávání mezi řetězci, znak po znaku až do:
Najde dva odpovídající znaky, které nejsou stejné a výsledek jejich porovnání je výsledkem porovnání řetězců.
Nenajde žádné nerovnosti, ale jeden řetězec má více znaků než druhý a kratší řetězec je považován za méně než delší řetězec.
Nenajde žádné nerovnosti a zjistí, že řetězce mají stejný počet znaků, takže jsou řetězce stejné.
Příklad
// 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 >=
Určuje, zda je řetězec na levé straně operátoru větší než nebo roven řetězci na pravé straně.
friend bool operator>=(const CStringT& str1, const CStringT& str2) throw();
friend bool operator>=(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator>=(PCXSTR psz1, const CStringT& str2) throw();
Parametry
str1
CStringTPro porovnání.
str2
CStringTPro porovnání.
psz1
Ukazatel na řetězec pro porovnání.
psz2
Ukazatel na řetězec pro porovnání.
Poznámky
Lexicographical porovnávání mezi řetězci, znak po znaku až do:
Najde dva odpovídající znaky, které nejsou stejné a výsledek jejich porovnání je výsledkem porovnání řetězců.
Nenajde žádné nerovnosti, ale jeden řetězec má více znaků než druhý a kratší řetězec je považován za méně než delší řetězec.
Nenajde žádné nerovnosti a zjistí, že řetězce mají stejný počet znaků, takže jsou řetězce stejné.
Příklad
// 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
Odebere všechny výskyty zadaného znaku z řetězce.
int Remove(XCHAR chRemove);
Parametry
chRemove
Znak, který má být odebrán z řetězce.
Návratová hodnota
Počet znaků odebraných z řetězce. Nula, pokud se řetězec nemění
Poznámky
Porovnávání znaku rozlišuje velká a malá písmena.
Příklad
// 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
Existují dvě verze systému Replace . První verze nahrazuje jednu nebo více kopií podřetězce pomocí jiného podřetězce. Oba podřetězce jsou zakončené znakem null. Druhá verze nahrazuje jednu nebo více kopií znaku pomocí jiného znaku. Obě verze pracují s daty znaků uloženými v CStringT .
int Replace(PCXSTR pszOld, PCXSTR pszNew);
int Replace(XCHAR chOld, XCHAR chNew);
Parametry
pszOld
Ukazatel na řetězec zakončený hodnotou null, který má být nahrazen hodnotou pszNew .
pszNew
Ukazatel na řetězec zakončený hodnotou null, který nahrazuje pszOld .
chOld
Znak, který má být nahrazen chNew .
chNew
Nahrazování znaků chOld .
Návratová hodnota
Vrátí počet nahrazených instancí znaku nebo podřetězec nebo hodnotu nula, pokud se řetězec nemění.
Poznámky
Replace může změnit délku řetězce, protože pszNew a nemusí pszOld být stejná délka a několik kopií starého podřetězce lze změnit na nový. Funkce rozlišuje rozlišovat velká a malá písmena.
Příklady CStringT instancí jsou CString , CStringA a CStringW .
Pro CStringAReplace používá sadu ANSI nebo vícebajtových znaků (MBCS). Pro CStringWReplace funguje s velkým množstvím znaků.
Pro CString je typ dat znaků vybrán v době kompilace na základě toho, zda jsou definovány konstanty v následující tabulce.
| Definovaná konstanta | Znakový datový typ |
|---|---|
_UNICODE |
Široké znaky |
_MBCS |
Dvoubajtové znaky |
| Ani jedno | Jednobajtové znaky |
| Obojí | Nedefinované |
Příklad
// 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
Vyhledá CStringT v tomto objektu poslední shodu znaku.
int ReverseFind(XCHAR ch) const throw();
Parametry
ch
Znak, který chcete vyhledat.
Návratová hodnota
Index založený na nule posledního znaku v tomto CStringT objektu, který odpovídá požadovanému znaku, nebo-1, pokud se znak nenajde.
Poznámky
Funkce je podobná funkci run-time strrchr .
Příklad
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcabc"));
ASSERT(s.ReverseFind(_T('b')) == 4);
CStringT::Right
Extrahuje poslední znaky (to znamená, co je nejvíce vpravo) nCount z tohoto CStringT objektu a vrátí kopii extrahované podřetězce.
CStringT Right(int nCount) const;
Parametry
nCount
Počet znaků, které mají být z tohoto CStringT objektu extrahovány.
Návratová hodnota
CStringTObjekt, který obsahuje kopii zadaného rozsahu znaků. Vrácený CStringT objekt může být prázdný.
Poznámky
Pokud nCount přesahuje délku řetězce, je extrahován celý řetězec. Right se podobá funkci Basic Right (s výjimkou toho, že indexy v Basic jsou počítány od nuly).
U vícebajtových znakových sad ( MBCS ) nCount odkazuje na každý 8bitový znak; to znamená, že vedoucí a koncový bajt v jednom vícebajtovém znaku jsou počítány jako dva znaky.
Příklad
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Right(2) == _T("ef"));
CStringT::SetSysString
Znovu přidělí BSTR ukazatel, na který odkazuje pbstr , a zkopíruje obsah CStringT objektu do něj, včetně NULL znaku.
BSTR SetSysString(BSTR* pbstr) const;
Parametry
pbstr
Ukazatel na řetězec znaků.
Návratová hodnota
Nový řetězec.
Poznámky
V závislosti na obsahu CStringT objektu se BSTR může změnit hodnota odkazovaného pbstr . Funkce vyvolá výjimku, CMemoryException Pokud existuje nedostatek paměti.
Tato funkce se obvykle používá ke změně hodnoty řetězců předaných odkazem pro automatizaci.
Příklad
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
Extrahuje znaky z řetězce počínaje prvním znakem, který není v sadě znaků identifikovaných pszCharSet .
CStringT SpanExcluding(PCXSTR pszCharSet) const;
Parametry
pszCharSet
Řetězec, který je interpretován jako sada znaků.
Návratová hodnota
Podřetězec obsahující znaky v řetězci, které nejsou v pszCharSet , počínaje prvním znakem v řetězci a končící prvním znakem nalezeným v řetězci, který je také v řetězci pszCharSet (tj. počínaje prvním znakem v řetězci a až s výjimkou prvního znaku v řetězci, který je nalezen pszCharSet ). Vrátí celý řetězec, pokud v řetězci nebyl nalezen žádný znak pszCharSet .
Poznámky
SpanExcluding extrahuje a vrátí všechny znaky před prvním výskytem znaku z pszCharSet (jinými slovy, znak z pszCharSet a všechny znaky, které následují v řetězci, se nevrátí). Pokud pszCharSet v řetězci není nalezen žádný znak, pak SpanExcluding vrátí celý řetězec.
Příklad
// 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
Extrahuje znaky z řetězce počínaje prvním znakem, které jsou v sadě znaků identifikovaných pszCharSet .
CStringT SpanIncluding(PCXSTR pszCharSet) const;
Parametry
pszCharSet
Řetězec, který je interpretován jako sada znaků.
Návratová hodnota
Podřetězec obsahující znaky v řetězci, které jsou v řetězci, pszCharSet počínaje prvním znakem v řetězci a končí při nalezení znaku v řetězci, který není v pszCharSet . SpanIncluding Vrátí prázdný podřetězec, pokud první znak v řetězci není v zadané sadě.
Poznámky
Pokud první znak řetězce není v sadě znaků, pak SpanIncluding vrátí prázdný řetězec. V opačném případě vrátí posloupnost po sobě jdoucích znaků, které jsou v sadě.
Příklad
// 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
Vyhledá další token v cílovém řetězci.
CStringT Tokenize(PCXSTR pszTokens, int& iStart) const;
Parametry
pszTokens
Řetězec obsahující oddělovače tokenů. Pořadí těchto oddělovačů není důležité.
iStart
Index založený na nule pro zahájení hledání.
Návratová hodnota
CStringTObjekt obsahující aktuální hodnotu tokenu.
Poznámky
TokenizeFunkce vyhledá další token v cílovém řetězci. Sada znaků v pszTokens určuje možné oddělovače tokenu, který se má najít. Při každém volání Tokenize funkce se spustí iStart , přeskočí úvodní oddělovače a vrátí CStringT objekt obsahující aktuální token, což je řetězec znaků až k dalšímu znaku oddělovače. Hodnota iStart je aktualizována tak, aby byla pozice za koncovým znakem oddělovače, nebo-1, pokud bylo dosaženo konce řetězce. Další tokeny lze rozdělit ze zbytku cílového řetězce řadou volání na Tokenize , pomocí nástroje iStart pro udržení přehledu o tom, kde v řetězci je další token čten. Pokud nejsou k dispozici žádné další tokeny, funkce vrátí prázdný řetězec a iStart bude nastavena na hodnotu-1.
Na rozdíl od funkce CRT tokenizovat , jako, _strtok_s_l ,, wcstok_s_wcstok_s_l , _mbstok_s_mbstok_s_l , , Tokenize neupravuje cílový řetězec.
Příklad
// 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);
};
Výstup z tohoto příkladu je následující:
Resulting Token: First
Resulting Token: Second
Resulting Token: Third
CStringT::Trim
Ořízne úvodní a koncové znaky z řetězce.
CStringT& Trim(XCHAR chTarget);
CStringT& Trim(PCXSTR pszTargets);
CStringT& Trim();
Parametry
chTarget
Cílový znak, který má být oříznut.
pszTargets
Ukazatel na řetězec obsahující cílové znaky, které mají být oříznuty. Všechny úvodní a koncové výskyty znaků v pszTargets se z objektu oříznou CStringT .
Návratová hodnota
Vrátí oříznutý řetězec.
Poznámky
Odebere všechny úvodní a koncové výskyty jednoho z následujících:
Znak určený parametrem
chTarget.Všechny znaky nalezené v řetězci určeném parametrem
pszTargets.Typy.
Příklad
// 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
Výstup z tohoto příkladu je následující:
Before: "******Soccer is best, but liquor is quicker!!!!!"
After : "Soccer is best, but liquor is quicker"
CStringT::TrimLeft
Ořízne úvodní znaky z řetězce.
CStringT& TrimLeft(XCHAR chTarget);
CStringT& TrimLeft(PCXSTR pszTargets);
CStringT& TrimLeft();
Parametry
chTarget
Cílový znak, který má být oříznut.
pszTargets
Ukazatel na řetězec obsahující cílové znaky, které mají být oříznuty. Všechny úvodní výskyty znaků v pszTargets se z objektu oříznou CStringT .
Návratová hodnota
Výsledný oříznutý řetězec.
Poznámky
Odebere všechny úvodní a koncové výskyty jednoho z následujících:
Znak určený parametrem
chTarget.Všechny znaky nalezené v řetězci určeném parametrem
pszTargets.Typy.
Příklad
// 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
Ořízne koncové znaky z řetězce.
CStringT& TrimRight(XCHAR chTarget);
CStringT& TrimRight(PCXSTR pszTargets);
CStringT& TrimRight();
Parametry
chTarget
Cílový znak, který má být oříznut.
pszTargets
Ukazatel na řetězec obsahující cílové znaky, které mají být oříznuty. Všechny koncové výskyty znaků v pszTargets se z objektu oříznou CStringT .
Návratová hodnota
Vrátí CStringT objekt, který obsahuje oříznutý řetězec.
Poznámky
Odebere koncové výskyty jednoho z následujících:
Znak určený parametrem
chTarget.Všechny znaky nalezené v řetězci určeném parametrem
pszTargets.Typy.
CStringT& TrimRight(XCHAR chTarget)Verze přijímá jeden parametr znaku a odstraní všechny kopie daného znaku z konce CStringT řetězcových dat. Začíná na konci řetězce a funguje směrem dopředu. Zastaví se, když najde jiný znak nebo když CStringT vyčerpá znaková data.
CStringT& TrimRight(PCXSTR pszTargets)Verze přijímá řetězec zakončený hodnotou null, který obsahuje všechny různé znaky, které chcete vyhledat. Odebere všechny kopie těchto znaků v CStringT objektu. Začíná na konci řetězce a funguje směrem dopředu. Zastaví se, když najde znak, který není v cílovém řetězci, nebo při CStringT vyzkoušení znakových dat. Nepokusí se porovnat celý cílový řetězec s podřetězcem na konci CStringT .
CStringT& TrimRight()Verze nevyžaduje žádné parametry. Ořízne všechny koncové prázdné znaky z konce CStringT řetězce. Prázdné znaky mohou být zalomení řádků, mezery nebo tabulátory.
Příklad
// 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