Sdílet prostřednictvím


Správa řetězcových dat

Visual C++ nabízí několik způsobů správy řetězcových dat:

  • Manipulace s řetězci pro práci se stylem NULLC -terminated strings

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

  • CStringT TŘÍDA MFC, která poskytuje flexibilní objekty řetězce s možností změny velikosti

  • Třída třídyCStringT, která poskytuje objekt řetězce nezávislý na knihovně MFC se stejnou funkcí jakoCString

Téměř všechny programy pracují s řetězcovými daty. CString Třída MFC je často nejlepším řešením pro flexibilní zpracování řetězců. Počínaje verzí 7.0 CString je možné ji použít v programech nezávislých na prostředí MFC nebo MFC. Knihovna za běhu i CString řetězce podpory obsahující vícebajtové (široké) znaky, jako je kódování Unicode nebo MBCS.

Tento článek popisuje služby pro obecné účely, které knihovna tříd poskytuje související s manipulací s řetězci. Témata probíraná v tomto článku zahrnují:

CStringT Třída poskytuje podporu pro manipulaci s řetězci. Účelem je nahradit a rozšířit funkce, které obvykle poskytuje balíček řetězců knihovny runtime jazyka C. Třída CString poskytuje členské funkce a operátory pro zjednodušené zpracování řetězců, podobně jako v basicu. Třída také poskytuje konstruktory a operátory pro vytváření, přiřazování a porovnávání CStringstandardních datových typů řetězců jazyka C++. Vzhledem k tomu CString , že není odvozen od CObject, můžete používat CString objekty nezávisle na většině knihovny tříd Microsoft Foundation (MFC).

CString objekty se řídí sémantikou hodnot. Objekt CString představuje jedinečnou hodnotu. CString Představte si řetězec jako skutečný řetězec, ne jako ukazatel na řetězec.

Objekt CString představuje sekvenci proměnného počtu znaků. CString objekty lze považovat za pole znaků.

Unicode a MBCS poskytují přenositelnost

V prostředí MFC verze 3.0 a novější je knihovna MFC, včetně CString, povolena pro znakové sady Unicode i vícebajtové znakové sady (MBCS). Tato podpora usnadňuje psaní přenosných aplikací, které můžete sestavit pro znaky Unicode nebo ANSI. Chcete-li tuto přenositelnost povolit, každý znak v objektu CString je typu TCHAR, který je definován jako wchar_t v případě, že definujete symbol _UNICODE při sestavování aplikace, nebo jako char ne. Znak wchar_t je široký 16 bitů. Funkce MBCS je povolená, pokud sestavíte pomocí definovaného symbolu _MBCS . Knihovna MFC je vytvořena buď pomocí symbolu _MBCS (pro knihovny NAFX), nebo _UNICODE se symbolem (pro knihovny UAFX) definovaným.

Poznámka:

Příklady CString v tomto článku a doprovodné články v řetězcích zobrazují literály správně formátované pro přenositelnost Unicode pomocí _T makra, které přeloží literálový řetězec do formuláře:

L"literal string"

Poznámka:

který kompilátor považuje za řetězec Unicode. Například následující kód:

CString strName = _T("Name");   

Poznámka:

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

CString Objekt může obsahovat až INT_MAX (2 147 483 647) znaků. Datový TCHAR typ slouží k získání nebo nastavení jednotlivých znaků uvnitř objektu CString . Na rozdíl od pole CString znaků má třída integrovanou funkci přidělování paměti. To umožňuje CString , aby se objekty podle potřeby automaticky zvětšovaly (to znamená, že se nemusíte starat o zvětšení objektu CString tak, aby odpovídaly delším řetězcům).

CStrings a const char ukazatele

Objekt CString může také fungovat jako literálový řetězec ve stylu jazyka C (což PCXSTRje stejné jako const char* v případě, že není v kódu Unicode). Operátor CSimpleStringT::operator PCXSTR převodu umožňuje CString volně nahradit objekty ukazateli znaků ve volání funkce. Konstruktor CString(LPCWSTR pszSrc) umožňuje nahradit CString objekty ukazateli znaků.

Není proveden žádný pokus o přeložení CString objektů. Pokud vytvoříte dva CString objekty obsahující Chicago, například znaky jsou Chicago uloženy na dvou místech. (To nemusí být pravdivé pro budoucí verze mfc, takže byste na něm neměli záviset.)

Poznámka:

CSimpleStringT::GetBuffer CSimpleStringT::ReleaseBuffer Členské funkce použijte, pokud potřebujete přímý přístup k znaku CString jako nekonstantní ukazatel na znak.

Poznámka:

CStringT::AllocSysString Pomocí členských CStringT::SetSysString funkcí můžete přidělovat a nastavovat BSTR objekty používané ve službě Automation (dříve označované jako automatizace OLE).

Poznámka:

Pokud je to možné, přidělte CString objekty na rámečku místo haldy. To šetří paměť a zjednodušuje předávání parametrů.

Třída CString není implementována jako třída kolekce Knihovny tříd Microsoft Foundation, i když CString objekty mohou být určitě uloženy jako prvky v kolekcích.

CString Počítání odkazů

Od mfc verze 4.0 CStringT při kopírování objektů třídy mfc zvýší počet odkazů místo kopírování dat. Díky tomu je předávání parametrů hodnotou a vrácení CString objektů podle hodnoty efektivnější. Tyto operace způsobují volání konstruktoru kopírování, někdy více než jednou. Zvýšení počtu odkazů snižuje režijní náklady na tyto běžné operace a zpřístupňuje CString atraktivní možnost.

Při zničení každé kopie se sníží počet odkazů v původním objektu. Původní CString objekt není zničen, dokud se počet odkazů nezmenší na nulu.

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

Viz také

Obecná témata MFC