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
, CStringA
und CStringW
werden in atlstr.h definiert. CStringT
wird in cstringt.h definiert.
CString
, CStringA
und 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.String
fü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
ObjektsCString
zu.CString oldString = _T("This is a test"); CString newString = oldString;
Der Inhalt eines
CString
Objekts wird kopiert, wenn ein Objekt einemCString
anderen zugewiesen wird. Daher verwenden die beiden Zeichenfolgen keinen Verweis auf die tatsächlichen Zeichen, aus denen die Zeichenfolge besteht. Weitere Informationen zur Verwendung vonCString
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 CString
Verfü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