Megosztás:


Alapszintű CString-műveletek

Ez a témakör a következő alapvető CString-műveleteket ismerteti:

Class CString osztálysablonon CStringTalapul. CString typedef a .CStringT Pontosabban CString az typedef egyik explicit specializációjaCStringT, amely egy osztálysablon általános módja egy osztály definiálásához. Hasonlóan definiált osztályok és CStringACStringW.

CString, CStringAés CStringW az atlstr.h fájlban vannak definiálva. CStringT a cstringt.h fájlban van definiálva.

CString, CStringAés CStringW mindegyik a támogatott sztringadatokkal való használatra meghatározott CStringT metódusok és operátorok készletét kapja meg. A metódusok némelyike ismétlődik, és bizonyos esetekben meghaladja a C futásidejű kódtárak sztringszolgáltatásait.

Megjegyzés: CString egy natív osztály. Egy C++/CLI által felügyelt projektben használható sztringosztály esetén használja a következőt System.String: .

CString-objektumok létrehozása standard C literális sztringekből

A C stílusú literális sztringeket ugyanúgy rendelheti hozzá, CString mint az egyik CString objektumot a másikhoz.

  • C literális sztring értékének hozzárendelése egy CString objektumhoz.

    CString myString = _T("This is a test");   
    
  • Rendelje hozzá az egyik CString értékét egy másik CString objektumhoz.

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

    Az objektum tartalma CString akkor lesz másolva, ha az egyik CString objektum egy másikhoz van rendelve. Ezért a két sztring nem hivatkozik a sztringet alkotó tényleges karakterekre. Az objektumok értékként való használatáról CString további információt a CString Szemantikában talál.

    Megjegyzés:

    Ha meg szeretné írni az alkalmazást, hogy Unicode-ra vagy ANSI-ra fordítható legyen, a _T makróval kódozza a literális sztringeket. További információ: Unicode és többbájtos karakterkészlet (MBCS) támogatása.

Egyéni karakterek elérése CStringben

Az objektumok egyes karaktereit CString a metódusok és GetAt a metódusok használatával érheti SetAt el. Az egyes karakterek beolvasása GetAt helyett használhatja a tömbelemet vagy az alsó indexet, az operátort ( [ ] ) is. (Ez hasonlít a tömbelemek index szerinti elérésére, mint a normál C-stílusú sztringekben.) A karakterek indexértékei CString nulla alapúak.

Két CString objektum összefűzése

Két CString objektum összefűzéséhez használja az összefűzési operátorokat (+ vagy +=) az alábbiak szerint.

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".

Az összefűzési operátorok (+ vagy +=) legalább egy argumentumának objektumnak kell lennie CString , de használhat állandó karaktersorozatot (például "big") vagy egy char (például "x") karaktert a másik argumentumhoz.

CString-objektumok összehasonlítása

A Compare metódus és a == operátor CString egyenértékű. Compare, operátor==, és CompareNoCase az MBCS és a Unicode tudatában van; CompareNoCase a kis- és nagybetűk is érzéketlenek. A Collate módszer CString területi szempontból érzékeny, és gyakran lassabb, mint Comparea . Csak ott használja Collate , ahol meg kell felelnie az aktuális területi beállítás által meghatározott rendezési szabályoknak.

Az alábbi táblázat a CString-összehasonlító függvényeket és azok megfelelő Unicode/MBCS-portable függvényeit mutatja be a C futásidejű kódtárban.

CString függvény MBCS függvény Unicode-függvény
Compare _mbscmp wcscmp
CompareNoCase _mbsicmp _wcsicmp
Collate _mbscoll wcscoll

Az CStringT osztálysablon határozza meg azokat a relációs operátorokat (<, <=, >=, >= és !=), amelyeket a rendszer használhat CString. A két CStrings operátort az alábbi példában látható módon hasonlíthatja össze.

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

CString-objektumok konvertálása

A CString-objektumok más sztringtípusokká való konvertálásával kapcsolatos információkért tekintse meg a How to: Convert between Various String Types (Konvertálás különböző sztringtípusok között) című témakört.

A CString használata wcouttal

A CString wcout használatához explicit módon át kell adnia az objektumot a const wchar_t* következő példában látható módon:

CString cs("meow");

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

A öntött nélkül cs a void*wcout program az objektum címét nyomtatja ki. Ezt a viselkedést a sablonargumentumok levonása és a túlterhelés feloldása közötti finom interakciók okozzák, amelyek önmagukban helyesek és megfelelnek a C++ szabványnak.

Lásd még

Sztringek (ATL/MFC)
CStringT-osztály
Sablon specializáció
Útmutató: Konvertálás különböző sztringtípusok között