Sdílet prostřednictvím


CString – základní operace

Toto téma vysvětluje následující základní operace CString :

Class CString je založená na šabloně třídy CStringT – třída. CString je z typedef CStringT. Přesněji řečeno, CString je typedef explicitní specializace CStringT, což je běžný způsob použití šablony třídy k definování třídy. Podobně definované třídy jsou CStringA a CStringW.

CString, CStringAa CStringW jsou definovány v atlstr.h. CStringT je definován v souboru cstringt.h.

CStringa CStringACStringW každá z nich získá sadu metod a operátorů definovaných CStringT pro použití s řetězcovými daty, která podporují. Některé z metod duplikují a v některých případech překračují řetězcové služby knihoven runtime jazyka C.

Poznámka: CString je nativní třída. Pro třídu řetězců, která se používá v projektu spravovaném V++/CLI, použijte System.String.

Vytváření objektů CString ze standardních řetězců literálů jazyka C

Literály CString ve stylu jazyka C můžete přiřadit stejně jako jeden CString objekt k druhému.

  • Přiřaďte k objektu hodnotu literálového řetězce jazyka CString C.

    CString myString = _T("This is a test");   
    
  • Přiřaďte hodnotu jednoho CString k jinému CString objektu.

    CString oldString = _T("This is a test");
    CString newString = oldString;
    

    Obsah objektu CString se zkopíruje, když je jeden CString objekt přiřazen k jinému. Proto dva řetězce nesdílí odkaz na skutečné znaky, které tvoří řetězec. Další informace o použití CString objektů jako hodnot naleznete v tématu CString Smantics.

    Poznámka:

    Chcete-li napsat aplikaci tak, aby ji bylo možné zkompilovat pro Kódování Unicode nebo pro anSI, řetězce literálů kódu pomocí _T makra. Další informace naleznete v tématu Podpora znakové sady Unicode a vícebajtové znakové sady (MBCS).

Přístup k jednotlivým znakům v jazyce CString

K jednotlivým znakům v objektu CString můžete přistupovat pomocí GetAt a SetAt metod. Můžete také použít maticový prvek nebo dolní index, operátor ( [ ] ) místo GetAt získání jednotlivých znaků. (Podobá se přístupu k prvkům pole podle indexu, stejně jako u standardních řetězců ve stylu jazyka C.) Hodnoty indexu pro CString znaky jsou založené na nule.

Zřetězení dvou objektů CString

Ke zřetězení dvou CString objektů použijte operátory zřetězení (+ nebo +=), jak je znázorněno níže.

CString s1 = _T("This ");        // Cascading concatenation
s1 += _T("is a ");
CString s2 = _T("test");
CString message = s1 + _T("big ") + s2;  
// Message contains "This is a big test".

Alespoň jeden argument operátorů zřetězení (+ nebo +=) musí být CString objekt, ale pro druhý argument můžete použít řetězec konstantního znaku (například "big") nebo ( char například x).

Porovnání objektů CString

Metoda Compare a operátor == pro CString jsou ekvivalentní. Compare, operator== a CompareNoCase jsou s podporou mbCS a Unicode; CompareNoCase nerozlišují se také malá a velká písmena. Metoda Collate CString je citlivá na národní prostředí a je často pomalejší než Compare. Použijte Collate pouze tam, kde se musíte řídit pravidly řazení podle aktuálního národního prostředí.

V následující tabulce jsou uvedeny dostupné porovnávací funkce CString a jejich ekvivalentní funkce přenosných funkcí Unicode/MBCS v knihovně runtime jazyka C.

CString – funkce MBCS Funkce Unicode
Compare _mbscmp wcscmp
CompareNoCase _mbsicmp _wcsicmp
Collate _mbscoll wcscoll

Šablona CStringT třídy definuje relační operátory (<, <=, >=, >= , == a !=), které jsou k dispozici pro použití CString. Pomocí těchto operátorů můžete porovnat dva CStrings , jak je znázorněno v následujícím příkladu.

CString s1(_T("Tom"));
CString s2(_T("Jerry"));
ASSERT(s2 < s1);

Převod objektů CString

Informace o převodu objektů CString na jiné typy řetězců naleznete v tématu Postupy: Převod mezi různými typy řetězců.

Použití CString s wcoutem

Chcete-li použít CString s wcout , musíte explicitně přetypovat objekt na objekt const wchar_t* , jak je znázorněno v následujícím příkladu:

CString cs("meow");

wcout << (const wchar_t*) cs << endl;

Bez přetypování cs se považuje za objekt a wcout void* vytiskne adresu objektu. Toto chování je způsobeno drobnými interakcemi mezi odpočtem argumentů šablony a řešením přetížení, které jsou samy o sobě správné a vyhovující standardu jazyka C++.

Viz také

Řetězce (ATL/MFC)
CStringT – třída
Specializace šablon
Postupy: Převody mezi různými typy řetězců