Megosztás a következőn keresztül:


Sztringadatok kezelése

Megjegyzés:

A Microsoft Foundation Classes (MFC) és az Active Template Library (ATL) továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

A Visual C++ számos módszert kínál a sztringadatok kezelésére:

  • Sztringmanipult-kezelés C stílussal NULLvégződő sztringek kezeléséhez

  • Win32 API-függvények sztringek kezeléséhez

  • MFC osztályaCStringT, amely rugalmas, átméretezhető sztringobjektumokat biztosít

  • OsztályosztályCStringT, amely egy MFC-független sztringobjektumot biztosít ugyanazzal a funkcióval, mintCString

Szinte minden program sztringadatokkal dolgozik. Az MFC osztálya CString gyakran a legjobb megoldás a rugalmas sztringkezeléshez. A 7.0-s CString verziótól kezdve MFC- vagy MFC-független programokban is használható. A futásidejű kódtár és CString a többbájtos (széles) karaktereket tartalmazó sztringek, mint a Unicode- vagy MBCS-programozásban.

Ez a cikk a sztringmanipulációhoz kapcsolódó általános célú szolgáltatásokat ismerteti. A cikkben tárgyalt témakörök a következők:

Az CStringT osztályosztály támogatja a sztringek manipulálását. A C futásidejű kódtár sztringcsomagja által biztosított funkciók cseréjére és bővítésére szolgál. Az CString osztály tagfüggvényeket és operátorokat biztosít az egyszerűsített sztringkezeléshez, hasonlóan az Alapszintű függvényekhez. Az osztály konstruktorokat és operátorokat is biztosít az s és a standard C++ sztring adattípusok létrehozására, hozzárendelésére és összehasonlítására CString. Mivel CString nem származik belőle CObject, a Microsoft Foundation osztálykönyvtárától (MFC) függetlenül használhat CString objektumokat.

CString az objektumok az "érték szemantikát" követik. Az CString objektumok egyedi értéket jelölnek. Gondoljon egy tényleges sztringre CString , nem pedig egy sztringre mutató mutatóra.

Az CString objektumok változó számú karakterből álló sorozatot jelölnek. CString az objektumok karaktertömbökként is felfoghatók.

A Unicode és az MBCS hordozhatóságot biztosít

Az MFC 3.0-s és újabb verziójával az MFC, beleértve CStringa Unicode és a többbájtos karakterkészleteket (MBCS) is engedélyezve van. Ez a támogatás megkönnyíti a Unicode- vagy ANSI-karakterekhez létrehozható hordozható alkalmazások írását. Ennek a hordozhatóságnak a engedélyezéséhez az CString objektum minden karaktere típussal TCHARrendelkezik, amely úgy van definiálva, mintha wchar_t az alkalmazás létrehozásakor definiálja a szimbólumot _UNICODE , vagy ha char nem. Egy wchar_t karakter 16 bit széles. Az MBCS engedélyezve van, ha a megadott szimbólummal _MBCS épít. Maga az MFC a _MBCS szimbólummal (a NAFX-kódtárakhoz) vagy a _UNICODE (UAFX-kódtárakhoz) definiált szimbólummal van létrehozva.

Megjegyzés:

A CString példában és a sztringeket tartalmazó cikkekben a Unicode hordozhatóságához megfelelően formázott literális sztringek jelennek meg a _T makró használatával, amely a literális sztringet az űrlapra fordítja:

L"literal string"

Megjegyzés:

amelyet a fordító Unicode-sztringként kezel. Például a következő kód:

CString strName = _T("Name");   

Megjegyzés:

Unicode-sztringként van lefordítva, ha _UNICODE definiálva van, vagy ANSI-sztringként, ha nem. További információ: Unicode és Többbájtos karakterkészlet (MBCS) támogatása.

Egy CString objektum legfeljebb INT_MAX (2 147 483 647) karaktert tárolhat. Az TCHAR adattípussal egyéni karaktereket kaphat vagy állíthat be egy objektumon CString belül. A karaktertömbökkel ellentétben az CString osztály beépített memóriafoglalási képességgel rendelkezik. Ez lehetővé teszi CString , hogy az objektumok szükség szerint automatikusan növekedjenek (vagyis nem kell amiatt aggódnia, hogy hosszabb sztringekhez illeszkedő objektumot CString növeszt).

CStrings és const char mutatói

Az CString objektumok úgy is viselkedhetnek, mint egy literális C-stílusú sztring (egy PCXSTR, amely megegyezik const char* , ha nem a Unicode alatt). A CSimpleStringT::operator PCXSTR konvertálási operátor lehetővé teszi CString , hogy az objektumok szabadon helyettesíthetők a függvényhívásokban szereplő karaktermutatókkal. A CString(LPCWSTR pszSrc) konstruktor lehetővé teszi a karaktermutatók helyettesítését az objektumokra CString .

Nem történik kísérlet objektumok összecsukására CString . Ha például két CString olyan objektumot hoz létre, amelyekben Chicagoa karakterek Chicago két helyen vannak tárolva. (Lehet, hogy ez nem igaz az MFC jövőbeli verzióira, ezért nem szabad attól függenie.)

Megjegyzés:

Az és CSimpleStringT::ReleaseBuffer a CSimpleStringT::GetBuffer tagfüggvényeket akkor használja, ha közvetlenül hozzá kell férnie egy CString karakterhez nem konkonzisztens mutatóként.

Megjegyzés:

Az Automationben (korábbi nevén OLE Automation) használt objektumok lefoglalásához és beállításához BSTR használja a CStringT::AllocSysStringCStringT::SetSysString tagfüggvényeket.

Megjegyzés:

Ahol lehetséges, a halom helyett a kereten foglalja le CString az objektumokat. Ez memóriát takarít meg, és leegyszerűsíti a paraméterátadást.

Az CString osztály nem a Microsoft Foundation osztálytár gyűjteményosztályaként van implementálva, bár CString az objektumok minden bizonnyal a gyűjtemények elemeiként tárolhatók.

CString Hivatkozásszámlálás

Az MFC 4.0-s verziójától függően az osztályobjektumok másolásakor CStringT az MFC az adatok másolása helyett növeli a referenciaszámot. Ez hatékonyabbá teszi a paraméterek érték szerinti átadását és az objektumok érték szerinti visszaadását CString . Ezek a műveletek a másolási konstruktor meghívását okozzák, néha többször is. A referenciaszám növelése csökkenti a gyakori műveletek többletterhelését, és CString vonzóbb lehetőséget biztosít.

Az egyes másolatok megsemmisítése során az eredeti objektum hivatkozásainak száma csökken. Az eredeti CString objektum nem lesz megsemmisítve, amíg a hivatkozási száma nullára nem csökken.

A tagfüggvények CSimpleStringT::LockBufferCSimpleStringT::UnlockBuffer használatával CString letilthatja vagy engedélyezheti a hivatkozásszámlálást.

Lásd még

Általános MFC-témakörök