Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Toto téma vysvětluje následující základní operace CString :
Class CString je založená na šabloně CStringTtřídy .
CString je z typedefCStringT. Přesněji řečeno, CString je typedefexplicitní specializaceCStringT, 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
CStringC.CString myString = _T("This is a test");Přiřaďte hodnotu jednoho
CStringk jinémuCStringobjektu.CString oldString = _T("This is a test"); CString newString = oldString;Obsah objektu
CStringse zkopíruje, když je jedenCStringobjekt 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íCStringobjektů 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 CollateCString 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 void*wcout 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ů