Podstawowe operacje na obiekcie CString
W tym temacie opisano następujące podstawowe operacje CString :
Tworzenie obiektów CString na podstawie standardowych ciągów literałów języka C
Uzyskiwanie dostępu do poszczególnych znaków w ciągu CString
Class CString
klasa jest oparta na klasie CStringT. CString
jest wartością typedef
typu CStringT
. Dokładniej jest CString
typedef
to jawna specjalizacja CStringT
klasy , która jest typowym sposobem używania szablonu klasy do definiowania klasy. Podobnie zdefiniowane klasy to CStringA
i CStringW
.
CString
, CStringA
i CStringW
są zdefiniowane w pliku atlstr.h. CStringT
element jest zdefiniowany w pliku cstringt.h.
CString
, CStringA
i 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
innegoCString
obiektu.CString oldString = _T("This is a test"); CString newString = oldString;
Zawartość
CString
obiektu jest kopiowana po przypisaniu jednegoCString
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żywaniaCString
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 CString
program . 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