Sdílet prostřednictvím


Správa dat řetězce

Visual C++ poskytuje několik způsobů správy dat řetězec:

  • Manipulaci s řetězci (CRT)pro práci s řetězci zakončený styl c

  • Funkce rozhraní Win32 API pro správu řetězce

  • Třídy MFC's Třída CStringT, která poskytuje flexibilní, nastavitelná řetězec objektů

  • Třída Třída CStringT, který poskytuje stejné funkce jako objekt řetězce nezávislé MFCCString

Téměř všechny programy pracovat s daty řetězec.MFC's CString třídy je často nejlepší řešení pro zpracování řetězců flexibilní.Od verze 7.0, CString lze použít v aplikacích MFC nebo nezávislý MFC.Knihovna runtime a CString podporu řetězce obsahující vícebajtových znaků (široký), viz programování Unicode nebo znakové sady MBCS.

Tento článek popisuje univerzální služby, které poskytuje knihovna tříd vztahující se k manipulaci s řetězci.Témata v tomto článku zahrnují:

  • Unicode a poskytují MBCS přenositelnost

  • CStrings a ukazatele const char

  • Odkaz CString počítání

Třída CStringT Třída poskytuje podporu pro manipulaci s řetězci.Je určena nahradit a rozšířit funkce obvykle poskytované balíček řetězec C Runtime library. CString Třída dodává členské funkce a operátory pro podobné prvkům Basic zjednodušené řetězec zpracování.Třída také poskytuje konstruktory a operátory pro sestavování, přiřazení a porovnání CStrings a standard C++ řetězce datové typy.Protože CString není odvozen od CObject , můžete použít CString objektů nezávisle na většinu knihovny pro třídy nadace Microsoft (MFC).

CStringobjekty podle "hodnota sémantiku." A CString objektu představuje jedinečnou hodnotu.Představte si, že CString jako skutečné řetězec, nikoli jako ukazatel na řetězec.

A CString objektu představuje posloupnost proměnný počet znaků.CStringobjekty můžete představit jako pole znaků.

Unicode a MBCS poskytují přenositelnost

S MFC verze 3.0 a novější, MFC, včetně CString , je povoleno kódování Unicode a vícebajtové znakové sady (MBCS).Tato podpora usnadňuje psát přenosné aplikace je možné vytvořit pro znaky ANSI nebo Unicode.Povolit tuto přenositelnost každý znak v CString je objekt typu TCHAR, definován jako wchar_t Pokud definujete symbol _UNICODE při vytváření aplikace nebo jako char Pokud není.A wchar_t znak je široká 16 bitů.Sestavit symbolem je povoleno MBCS _MBCS definovány.MFC samotný založen buď _MBCS symbol (pro knihovny NAFX) nebo _UNICODE symbol (pro knihovny UAFX) definovaný.

[!POZNÁMKA]

CString Příklady v tomto a doprovodná články na Zobrazit řetězce literálu řetězce správně formátovaný pro přenositelnost Unicode, pomocí _T makra, která překládá řetězcový literál formuláře:

L"literal string"

[!POZNÁMKA]

které kompilátor zpracovává jako řetězec ve formátu Unicode.Například následující kód:

CString strName = _T("Name");   

[!POZNÁMKA]

je přeložen jako řetězec znaků Unicode, pokud _UNICODE je definován nebo ANSI řetězec, pokud není.Další informace naleznete v článku Unicode a vícebajtové znakové sady (MBCS) podpora.

A CString objektu můžete uložit až INT_MAX (2 147 483 647) znaků.TCHAR typ dat lze získat nebo nastavit jednotlivé znaky uvnitř CString objektu.Na rozdíl od matice znaku CString třída má možnost přidělení vestavěné paměti.Díky CString objekty automaticky růst podle potřeby (tedy nemáte starosti o pěstování CString objekt přizpůsobit delší řetězce).

CStrings a ukazatele const char

A CString objektu mohou také sloužit jako řetězcový literál c styl ( PCXSTR , což je stejné jako const char * Pokud není podle Unicode).CSimpleStringT::operator PCXSTR Umožňuje převod operátor CString objekty volně nahrazení znaku ukazatele ve volání funkce.CString (LPCWSTRpszSrc**)** nahrazuje ukazatele znaků umožňuje konstruktor CString objektů.

Bez pokusu o přeložení CString objektů.Pokud dva CString objekty obsahující Chicago , například znaky v Chicago jsou uloženy na dvou místech.(Nemusí to být pravda budoucích verzí MFC, tak by neměl na ní závisí.)

[!POZNÁMKA]

Použití CSimpleStringT::GetBuffer a CSimpleStringT::ReleaseBuffer členské funkce potřebujete přímý přístup CString jako nonconstant ukazatel na znak.

[!POZNÁMKA]

Použití CStringT::AllocSysString a CStringT::SetSysString funkce členů přidělit a nastavit BSTR objekty automatizace (dříve nazývaná automatizace OLE).

[!POZNÁMKA]

Pokud možno přidělit CString objektů na snímku, nikoli na haldy.Tím se šetří paměť a zjednodušuje předávání parametrů.

CString Třídy není implementován jako kolekce třídy knihovny Microsoft Foundation Class, i když CString by jistě objekty mohou být uloženy jako prvky kolekce.

Odkaz CString počítání

Od verze 4.0, MFC při Třída CStringT objekty kopírují, MFC zvýší počet odkazů místo kopírování dat.Díky předávání parametrů hodnotou a vrácení CString objekty podle hodnoty efektivnější.Tyto operace způsobit Kopírovat konstruktor bude vyvolána někdy více než jednou.Nezvyšuje počet odkazů snižuje režii, že pro tyto společné operace a provede pomocí CString přitažlivější možnost.

Každá kopie je zničen, počet odkazů v původním objektu je snížena.Původní CString objektu není zničeny, dokud se jeho počet odkazů je snížena na nulu.

Můžete použít CString funkce členů CSimpleStringT::LockBuffer a CSimpleStringT::UnlockBuffer zakázat nebo Povolit počítání odkazů.

Viz také

Koncepty

Obecná témata MFC