Ciąg danych zarządzania
Visual C++ zapewnia kilka sposobów zarządzania danymi w ciągu:
Manipulowanie ciągami (CRT)do pracy z c styl ciągów zakończona znakiem null
Funkcje zarządzania ciągi Win32 API.
Klasy MFC firmy Klasa CStringT, który zawiera obiekty ciąg elastycznych o zmiennym rozmiarze
Klasa Klasa CStringT, które zapewnia taką samą funkcjonalność jak obiekt string niezależne MFCCString
Niemal wszystkie programy mogą pracować ciąg danych.MFC firmy CString klasy jest często najlepsze rozwiązanie do obsługi elastyczne ciąg.Począwszy od wersji 7.0, CString mogą być używane w programy MFC lub niezależnych MFC.Biblioteka uruchomieniowa i CString obsługuje ciągów wielobajtowych znaków (szeroki), jak programowanie Unicode lub MBCS zawierających.
W tym artykule opisano usług ogólnego przeznaczenia, które Biblioteka klas zawiera związane z manipulowanie ciągami.W tym artykule tematy obejmują:
Unicode oraz zapewnić MBCS przenośność
CStrings i wskaźniki const char
Zliczanie odwołań CString
Klasa CStringT Klasy zapewnia obsługę manipulowania łańcuchami znaków.Jest ona przeznaczona do zastąpienia i rozszerzają zwykle świadczone przez pakiet biblioteka uruchomieniowa c w ciągu.CString Klasy dostaw Członkowskich funkcje i operatory obsługa ciąg uproszczone, podobne do tych w podstawowe.Klasa przewiduje również konstruktory i operatorów budowy, przypisywanie oraz porównanie CStrings i standardowe typy danych string języka C++.Ponieważ CString nie jest pochodną CObject, można użyć CString z klasy biblioteki MFC (Microsoft Foundation) większość obiektów.
CStringobiekty wykonaj "wartość semantykę." A CString obiekt reprezentuje unikatową wartość.Pomyśl o CString jako rzeczywistym ciągiem znaków, a nie jako wskaźnik na ciąg.
A CString obiekt reprezentuje sekwencję zmienna liczba znaków.CStringobiekty można traktować jako tablice znaków.
Unicode i MBCS zapewniają przenośność
Z tym wersja 3.0 i nowsze, MFC, MFC CString, jest włączona dla Unicode i zestawy znaków wielobajtowych (MBCS).Wsparcie to ułatwia pisać aplikacje przenośne, że można tworzyć dla znaków Unicode lub ANSI.Aby włączyć ten przenośność, każdy znak w CString typ obiektu jest TCHAR, który jest zdefiniowany jako wchar_t zdefiniowania symbol _UNICODE podczas konstruowania aplikacji lub jako char Jeśli nie.A wchar_t znak jest szerokość 16 bitów.MBCS jest włączona, jeśli kompilacji z symbolem _MBCS zdefiniowane.MFC sam jest zbudowany z albo _MBCS symbolu (dla biblioteki NAFX) lub _UNICODE symbol (dla biblioteki UAFX) zdefiniowany.
[!UWAGA]
CString Przykłady w tym i towarzyszących artykuły show ciągów literalnych ciągów poprawnie sformatowane przenośności Unicode, przy użyciu _T makra, który tłumaczy literału do formularza:
L"literal string"
[!UWAGA]
które kompilator traktuje się jako ciąg Unicode.Na przykład następujący kod:
CString strName = _T("Name");
[!UWAGA]
tłumaczone jako ciąg Unicode, jeśli _UNICODE jest zdefiniowany lub jako ANSI ciąg, jeżeli nie.Aby uzyskać więcej informacji, zobacz artykuł Unicode i znaków wielobajtowych ustawić wsparcia (MBCS).
A CString obiektu można przechowywać do INT_MAX (2 147 483 647) znaków.TCHAR typ danych jest używany do get lub set poszczególnych znaków wewnątrz CString obiektu.W przeciwieństwie do tablic znaku CString klasa ma możliwość alokacji pamięci wbudowanych.Pozwala to CString obiekty automatycznie rośnie w razie potrzeby (czyli nie trzeba się martwić o uprawy CString obiektu do dłuższych ciągów).
CStrings i wskaźniki const char
A CString obiektu mogą również pełnić rolę c stylów literał ( PCXSTR, który jest taki sam, jak const char * Jeśli nie w Unicode).CSimpleStringT::operator PCXSTR Umożliwia konwersję operator CString obiektów swobodnie zastępuje znak wskaźniki w wywołania funkcji.CString (LPCWSTRpszSrc**)** konstruktora pozwala wskaźniki znaku na CString obiektów.
Nie próby zginania CString obiektów.Jeśli dwa CString obiektów zawierających Chicago, na przykład znaki w Chicago są przechowywane w dwóch miejscach.(Może nie to PRAWDA w przyszłych wersjach MFC, więc nie należy uwzględniać go.)
[!UWAGA]
Użyj CSimpleStringT::GetBuffer i CSimpleStringT::ReleaseBuffer Członkowskich funkcje konieczne do uzyskania bezpośredniego dostępu do CString jako nonconstant wskaźnik do znaku.
[!UWAGA]
Użyj CStringT::AllocSysString i CStringT::SetSysString funkcji elementów członkowskich, aby przydzielić i ustawić BSTR obiektów używanych w automatyzacji (dawniej znany jako automatyzacji OLE).
[!UWAGA]
Jeśli to możliwe, należy przydzielić CString obiektów na ramkę, a nie na stercie.Oszczędza to pamięć i upraszcza parametr przekazując.
CString Klasy nie jest zaimplementowana jako Klasa kolekcji biblioteki klas systemu Microsoft Foundation, chociaż CString z pewnością obiekty mogą być przechowywane w postaci elementów w kolekcji.
Zliczanie odwołań CString
Od MFC wersja 4.0 gdy Klasa CStringT obiekty są kopiowane, MFC zwiększa liczbę odwołań zamiast kopiowania danych.Dzięki temu przekazywanie parametrów przez wartość i zwracanie CString obiekty według wartości bardziej efektywne.Te operacje powodują Konstruktor kopiujący jest wywoływana czasami więcej niż raz.Zwiększanie licznika odwołań zmniejsza obciążenie, że tych typowych operacji i ułatwia używanie CString opcji bardziej atrakcyjny.
Jak zniszczone kopię każdego licznika odwołań w obiekcie oryginalnym jest zmniejszany.Oryginał CString obiekt nie jest niszczony, dopóki jego licznika odwołań jest zredukowane do zera.
Można użyć CString Członkowskich funkcje CSimpleStringT::LockBuffer i CSimpleStringT::UnlockBuffer do wyłączania lub włączania zliczania odniesienia.