Share via


Grundlegende CString-Vorgänge

In diesem Thema werden die folgenden grundlegenden CString-Vorgänge erläutert:

Class CString basiert auf der Klassenvorlage CStringT-Klasse. CString ist ein typedef von CStringT. Genauer gesagt, CString ist eine typedef explizite Spezialisierung von CStringT, die eine gängige Möglichkeit ist, eine Klassenvorlage zum Definieren einer Klasse zu verwenden. Ähnlich definierte Klassen sind CStringA und CStringW.

CString, CStringAund CStringW werden in atlstr.h definiert. CStringT wird in cstringt.h definiert.

CString, CStringAund CStringW jeder ruft einen Satz der Methoden und Operatoren ab, die für CStringT die Verwendung mit den von ihnen unterstützten Zeichenfolgendaten definiert sind. Einige der Methoden duplizieren und überschreiten in einigen Fällen die Zeichenfolgendienste der C-Laufzeitbibliotheken.

Hinweis: CString ist eine systemeigene Klasse. Verwenden Sie System.Stringfür eine Zeichenfolgenklasse, die in einem verwalteten C++/CLI-Projekt verwendet werden soll.

Erstellen von CString-Objekten aus standardmäßigen C-Literalzeichenfolgen

Sie können literalen Zeichenfolgen im C-Stil genauso CString zuweisen, wie Sie ein CString Objekt einem anderen zuweisen können.

  • Weisen Sie einem CString Objekt den Wert einer C-Literalzeichenfolge zu.

    CString myString = _T("This is a test");   
    
  • Weisen Sie dem anderen Objekt den Wert eines CString Objekts CString zu.

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

    Der Inhalt eines CString Objekts wird kopiert, wenn ein Objekt einem CString anderen zugewiesen wird. Daher verwenden die beiden Zeichenfolgen keinen Verweis auf die tatsächlichen Zeichen, aus denen die Zeichenfolge besteht. Weitere Informationen zur Verwendung von CString Objekten als Werte finden Sie unter CString-Semantik.

    Hinweis

    Wenn Sie Ihre Anwendung so schreiben möchten, dass sie für Unicode oder für ANSI kompiliert werden kann, verwenden Sie das _T-Makro. Weitere Informationen finden Sie unter Unterstützung von Unicode- und Multibyte-Zeichensatz (MBCS).

Zugreifen auf einzelne Zeichen in einem CString

Sie können auf einzelne Zeichen in einem CString Objekt zugreifen, indem Sie die GetAt Methoden verwenden SetAt . Sie können auch das Arrayelement oder tiefgestellte Operator ( [ ] ) anstelle einzelner GetAt Zeichen verwenden. (Dies ähnelt dem Zugriff auf Arrayelemente nach Index, wie in standardmäßigen C-Stil-Zeichenfolgen.) Indexwerte für CString Zeichen sind nullbasiert.

Verketten von zwei CString-Objekten

Um zwei CString Objekte zu verketten, verwenden Sie die Verkettungsoperatoren (+ oder +=) wie folgt.

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

Mindestens ein Argument für die Verkettungsoperatoren (+ oder +=) muss ein CString Objekt sein, Sie können jedoch eine konstante Zeichenfolge (z "big". B. ) oder ein char (z. B. "x") für das andere Argument verwenden.

Vergleichen von CString-Objekten

Die Compare Methode und der Operator CString == sind gleichwertig. Compare, Operator==, und CompareNoCase sind MBCS und Unicode-fähig. CompareNoCase Die Groß-/Kleinschreibung wird ebenfalls beachtet. Die Collate Methode ist CString gebietsschemaempfindlich und ist oft langsamer als Compare. Verwenden Sie Collate nur die Stelle, an der Sie die Sortierregeln einhalten müssen, wie im aktuellen Gebietsschema angegeben.

Die folgende Tabelle zeigt die verfügbaren CString-Vergleichsfunktionen und die entsprechenden unicode/MBCS-portablen Funktionen in der C-Laufzeitbibliothek.

CString-Funktion MBCS-Funktion Unicode-Funktion
Compare _mbscmp wcscmp
CompareNoCase _mbsicmp _wcsicmp
Collate _mbscoll wcscoll

Die CStringT Klassenvorlage definiert die relationalen Operatoren (<= <, =, >= , >== und !=), die für die Verwendung zur CStringVerfügung stehen. Sie können zwei CStrings vergleichen, indem Sie diese Operatoren verwenden, wie im folgenden Beispiel gezeigt.

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

Konvertieren von CString-Objekten

Informationen zum Konvertieren von CString-Objekten in andere Zeichenfolgentypen finden Sie unter How to: Convert Between Various String Types.

Verwenden von CString mit Wcout

Wenn Sie ein CString-Objekt verwenden wcout möchten, müssen Sie das Objekt explizit in ein const wchar_t* objekt umwandeln, wie im folgenden Beispiel gezeigt:

CString cs("meow");

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

Ohne die Umwandlung cs wird als Eine void* behandelt und wcout druckt die Adresse des Objekts. Dieses Verhalten wird durch subtile Interaktionen zwischen Vorlagenargumentabzug und Überladungsauflösung verursacht, die selbst korrekt und konform mit dem C++-Standard sind.

Siehe auch

Zeichenfolgen (ATL/MFC)
CStringT-Klasse
Vorlagenspezialisierung
Vorgehensweise: Konvertieren zwischen verschiedenen Zeichenfolgentypen