Udostępnij za pośrednictwem


Podstawowe operacje na obiekcie CString

W tym temacie opisano następujące podstawowe operacje CString :

Class CStringklasa jest oparta na klasie CStringT. CString jest wartością typedef typu CStringT. Dokładniej jest CString typedef to jawna specjalizacja CStringTklasy , która jest typowym sposobem używania szablonu klasy do definiowania klasy. Podobnie zdefiniowane klasy to CStringA i CStringW.

CString, CStringAi CStringW są zdefiniowane w pliku atlstr.h. CStringT element jest zdefiniowany w pliku cstringt.h.

CString, CStringAi CStringW każdy pobiera zestaw metod i operatorów zdefiniowanych przez CStringT program do użycia z danymi ciągów, które obsługują. Niektóre metody zduplikowane i, w niektórych przypadkach, przekraczają usługi ciągów bibliotek czasu wykonywania języka C.

Uwaga: CString jest klasą natywną. W przypadku klasy ciągów używanej w projekcie zarządzanym w języku C++/CLI użyj polecenia System.String.

Tworzenie obiektów CString na podstawie ciągów literałów języka C w warstwie Standardowa

Możesz przypisać ciągi literału w stylu C do CString obiektu tak samo, jak można przypisać jeden CString obiekt do innego.

  • Przypisz wartość ciągu literału języka C do CString obiektu.

    CString myString = _T("This is a test");   
    
  • Przypisz wartość do CString innego CString obiektu.

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

    Zawartość CString obiektu jest kopiowana po przypisaniu jednego CString obiektu do innego. W związku z tym dwa ciągi nie współużytkują odwołania do rzeczywistych znaków tworzących ciąg. Aby uzyskać więcej informacji na temat używania CString obiektów jako wartości, zobacz CString Semantics.

    Uwaga

    Aby napisać aplikację tak, aby można ją było skompilować dla formatu Unicode lub ANSI, ciągi literału kodu przy użyciu makra _T. Aby uzyskać więcej informacji, zobacz Obsługa zestawów znaków Unicode i wielobajtowych (MBCS).

Uzyskiwanie dostępu do pojedynczych znaków w ciągu CString

Dostęp do poszczególnych znaków w CString obiekcie można uzyskać przy użyciu GetAt metod i SetAt . Można również użyć elementu tablicy lub indeksu dolnego, operatora ( [ ] ) zamiast GetAt uzyskać pojedyncze znaki. (Przypomina to uzyskiwanie dostępu do elementów tablicy według indeksu, jak w standardowych ciągach w stylu C). Wartości indeksu dla CString znaków są oparte na zerach.

Łączenie dwóch obiektów CString

Aby połączyć dwa CString obiekty, użyj operatorów łączenia (+ lub +=), jak pokazano poniżej.

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

Co najmniej jeden argument operatorów łączenia (+ lub +=) musi być obiektemCString, ale można użyć stałego ciągu znaku (na przykład ) lub char (na przykład "big""x") dla drugiego argumentu.

Porównywanie obiektów CString

Metoda Compare i operator == dla CString są równoważne. Compare, operator==, i CompareNoCase są z uwzględnieniem MBCS i Unicode; CompareNoCase jest również bez uwzględniania wielkości liter. Metoda Collate jest wrażliwa CString na ustawienia regionalne i jest często wolniejsza niż Compare. Używaj Collate tylko wtedy, gdy należy przestrzegać reguł sortowania określonych przez bieżące ustawienia regionalne.

W poniższej tabeli przedstawiono dostępne funkcje porównania CString i ich równoważne funkcje przenośne Unicode/MBCS w bibliotece czasu wykonywania języka C.

CString, funkcja MBCS, funkcja Funkcja Unicode
Compare _mbscmp wcscmp
CompareNoCase _mbsicmp _wcsicmp
Collate _mbscoll wcscoll

Szablon CStringT klasy definiuje operatory relacyjne (<, =, <=, >>== i !=), które są dostępne do użycia przez CStringprogram . Można porównać dwa CStrings przy użyciu tych operatorów, jak pokazano w poniższym przykładzie.

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

Konwertowanie obiektów CString

Aby uzyskać informacje na temat konwertowania obiektów CString na inne typy ciągów, zobacz Instrukcje: konwertowanie między różnymi typami ciągów.

Używanie funkcji CString z funkcją wcout

Aby użyć obiektu CString, wcout należy jawnie rzutować obiekt na obiekt const wchar_t* , jak pokazano w poniższym przykładzie:

CString cs("meow");

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

Bez rzutowania cs obiekt jest traktowany jako obiekt void* i wcout wyświetla adres obiektu. To zachowanie jest spowodowane subtelnymi interakcjami między odliczeniem argumentu szablonu i rozpoznawaniem przeciążenia, które są poprawne i zgodne ze standardem C++.

Zobacz też

Ciągi (ATL/MFC)
CStringT, klasa
Specjalizacja szablonu
Instrukcje: konwertowanie między rozmaitymi typami ciągów