Wie man Raum für Wide Strings in C ++

Die C ++ Programmierer ist oft erforderlich, breit Zeichenketten zu manipulieren. Die Standard-C ++ Bibliothek enthält Funktionen breite Zeichenfolgen zu behandeln. Einige dieser Funktionen sind in dieser Tabelle aufgeführt.

Wide-String-Handling-Funktionen
NameBetrieb
int Wcslen (string)Gibt die Anzahl der breiten Zeichen in einer Zeichenfolge, notincluding das abschließende Null.
wchar_t * wcscpy (Ziel, Quelle)Kopiert die Quelle Wide-String in eine Ziel-Array.
wchar_t * wcscat (Ziel, Quelle)Verknüpft die Quelle Wide-String an das Ende des targetwide String.
wchar_t * wcsncpy (Ziel, Quelle, n)Kopiert eine breite Zeichenfolge mit bis zu nZeichen aus dem Quellstring in eine Ziel-Array.
wchar_t * wcsncat (Ziel, Quelle, n)Verknüpft die Quellzeichenfolge auf das Ende des targetstring oder n Zeichen, je nachdem, was comesfirst.
wchar_t * wcsstr (string, Muster)Findet die Adresse des ersten Auftretens des Musters in string.Returns eine Null, wenn Muster nicht gefunden wird.
int wcscmp (source1, source2)Vergleicht zwei Wide-Strings. Gibt -1 zurück, wenn source1 auftritt, bevor source2 im Wörterbuch und 1, wenn later.Returns 0, wenn die beiden Strings genau übereinstimmen.
int wcsncmp (source1, source2, n)Vergleicht das erste n breite zwei Wide-Strings charactersin.

Denken Sie daran, dass breite Zeichen werden für Anwendungen eingesetzt, die Fremdsprachen unterstützen muss, wo eine schlappe 255 verschiedene Zeichen nicht ausreichen.

Die folgende Abbildung zeigt eine breite Zeichen Version der Verketten Programm:

// ConcatenateWide - verketten zwei Wide-Strings // mit einem "-" in der Mitte mit Bibliotheksroutinen # include #einschließen #einschließen using namespace std-int main (int nNumberofArgs, char * pszArgs []) {// erste String lesen ... Wchar_t wszString1 [260] -cout lt; lt; "Geben Sie String # 1:" - wcin.getline (wszString1, 128) - // ... jetzt der zweite String ... Wchar_t wszString2 [128] -cout lt; lt; "Geben Sie String # 2:" - wcin.getline (wszString2, 128) - // jetzt die zweite auf das Ende des ersten // mit einem Schuss in betweenwcsncat tack (wszString1, L "-", 260) -wcsncat (wszString1 , wszString2, 260) -wcout lt; lt; L " n" lt; lt; wszString1 lt; lt; Endl - // warten, bis der Benutzer bereit ist, bevor Programm beendet // dem Benutzer zu ermöglichen, das Programm resultscout zu sehen lt; lt; "Drücken Sie die Eingabetaste, um fortzufahren ..." lt; lt; Endl-cin.ignore (10, ' n') - cin.get () - Rückkehr 0-}

Der breite Zeichenfolge Programm orientiert sich an seinem Single-Byte-Zeichenfolge Cousin mit Ausnahme der folgenden Unterschiede ähnlich:

  • Variablen deklariert wchar_t eher, als verkohlen.

  • Konstante Zeichen und konstante Strings erscheinen durch ein voran L, wie in L # 147 Dies ist eine große Zeichenfolge # 148-.

  • die Objekte WCIN und wcout werden anstelle von cin und cout für Eingang und Ausgang.

  • Das wcs # 133- Funktionen werden anstelle des schmalen str # 133- Funktionen.

Die Ausgabe aus ConcatenateWide scheint, dass der identischen verkohlen-basierend Verketten Programm für diejenigen, die in den europäischen Sprachen die meisten ihrer Eingabe / Ausgabe tun. Das Thema Schreiben von Programmen, die mehrere Sprachen mit verschiedenen Alphabeten und Regeln der Grammatik Handhabung ist bekannt als Lokalisierung.

ANSI C ++ enthält einen Typ Schnur gestaltet es einfacher zu machen, Textstrings zu manipulieren.

Menü