Basic CString Operations
In diesem Thema werden die folgenden grundlegenden CString Vorgänge:
Erstellen von CString-Objekten von Standard-C-Literalzeichenfolgen
Zugreifen auf einzelne Zeichen in einem CString
Verketten von zwei CString-Objekten
Vergleichen von CString-Objekten
Konvertieren von CString-Objekten
Class CString basiert auf Klassenvorlage CStringT Class. CString ist typedef von CStringT. Genauer gesagt, ist CStringtypedef einer expliziten Spezialisierung von CStringT, die eine allgemeine Methode besteht darin, eine Klassenvorlage verwenden, um eine Klasse definieren. Entsprechend definierte Klassen sind CStringA und CStringW. Weitere Informationen über explizite Spezialisierung, finden Sie unter Klassenvorlageninstanziierung.
CString, CStringA und CStringW werden in atlstr.h definiert. CStringT wird in cstringt.h definiert.
CString, CStringA und CStringW jedes rufen einen Satz von Methoden und der Operatoren ab, die von CStringT zur Verwendung mit den Zeichenfolgendaten definiert werden, die sie unterstützen. Ein Teil des Methodenduplikat und übertreffen in einigen Fällen die Zeichenfolgendienste der C-Laufzeitbibliotheken.
Hinweis: CString ist eine systemeigene Klasse. Eine Zeichenfolgenklasse, die für die Verwendung in verwaltetem ein C/C++-Projekt ++/CLI ist, verwenden Sie System.String.
Erstellen von CString-Objekten von Standard-C-Literalzeichenfolgen
Sie können im C-Format zuweisen CString Literalzeichenfolgen, wie Sie ein CString-Objekt für andere zuweisen können.
Weisen Sie den Wert von Wechselstrom-Literalzeichenfolge zu einem CString-Objekt zu.
CString myString = _T("This is a test");
Weisen Sie den Wert von einem CString zu einem anderen CString-Objekt zu.
CString oldString = _T("This is a test"); CString newString = oldString;
Der Inhalt eines Objekts CString kopiert wird, wenn ein CString-Objekt für andere zugewiesen wird. Daher geben die beiden Zeichenfolgen keinen Verweis auf den tatsächlichen Zeichen frei, die die Zeichenfolge besteht. Weitere Informationen dazu, wie CString-Objekte als Werte, finden Sie unter CString Semantics verwendet.
Hinweis
Um die Anwendung, damit sie für Unicode oder für ANSI kompiliert werden kann, Codeliteralzeichenfolgen mithilfe des _T Makros schreiben.Weitere Informationen finden Sie unter Unicode and Multibyte Character Set (MBCS) Support.
Zugreifen auf einzelne Zeichen in einem CString
Sie können auf einzelne Zeichen in einem CString-Objekt zugreifen, indem Sie die GetAt und SetAt-Methoden ausführen. Sie können das Arrayelement oder Feldindex, Operator ( [ ] ) auch verwenden anstelle von GetAt, um einzelne Zeichen abzurufen. (Dies ähnelt dem Zugriff auf Arrayelemente nach Index, wie in den StandardZeichenfolgen im C-Format.) 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 an den Verkettungsoperatoren (+ oder +=) ein CString-Objekt, aber Sie sein kann eine konstante Zeichenfolge (beispielsweise, "big") oder char (beispielsweise, "x ") für das andere Argument verwenden.
Vergleichen von CString-Objekten
Die Methode und der Compare == Operator für CString sind gleichwertig. Compare, operator== und CompareNoCase sind MBCS und Unicode, die Bescheid wissen; CompareNoCase ist auch die Groß-/Kleinschreibung nicht beachtet. Die Collate-Methode von CString ist gebietsschemaabhängig und ist häufig langsamer als Compare. Verwenden Sie Collate nur, in dem Sie durch Sortierregeln bleiben müssen, wie durch das aktuelle Gebietsschema angegeben.
Die folgende Tabelle zeigt die verfügbaren CString Vergleichsfunktionen und ihre Funktionen der entsprechend Unicode/MBCS-portable in der C-Laufzeitbibliothek an.
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 CString verfügbar sind. Sie können zwei CStrings vergleichen, indem Sie diese Operatoren, 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 zu anderen Zeichenfolgentypen, finden Sie unter Gewusst wie: Konvertieren zwischen verschiedenen Zeichenfolgentypen.
Verwenden CString mit wcout
Um ein CString mit wcout verwenden müssen Sie das Objekt in const wchar_t* wie im folgenden Beispiel gezeigt explizit umwandeln:
CString cs("meow");
wcout << (const wchar_t*) cs << endl;
Ohne die Umwandlung wird cs behandelt, während void* und wcout die Adresse des Objekts ausgibt. Dieses Verhalten wird von kleinere Interaktionen zwischen Vorlagenargumentableitung und Überladungsauflösung verursacht, die in selbst richtig und konform mit dem C++-Standard sind.
Siehe auch
Referenz
Explizite Spezialisierung von Klassenvorlagen
Partielle Spezialisierung von Klassenvorlagen (C++)
Konzepte
Gewusst wie: Konvertieren zwischen verschiedenen Zeichenfolgentypen