C ++ wcsxfrm () - C ++ Standardbibliothek

Die Funktion wcsxfrm () in C ++ wandelt eine bestimmte nullterminierte breite Zeichenfolge in eine implementierungsdefinierte Form um.

Die Funktion wcsxfrm () transformiert eine breite Zeichenfolge so, dass der Vergleich zweier transformierter breiter Zeichenfolgen mit der Funktion wcscmp () zu identischen Ergebnissen führt wie der Vergleich der ursprünglichen breiten Zeichenfolgen mit der Funktion wcscoll () im aktuellen C-Gebietsschema.

Zum Beispiel sind x und y zwei breite Zeichenfolgen. a und b sind zwei breite Strings, die durch Transformieren von x bzw. y unter Verwendung der Funktion wcsxfrm gebildet werden.

Dann,

 wcscmp (a, b) = wcscoll (x, y)

Es ist in der Header-Datei definiert.

wcsxfrm () Prototyp

 size_t wcsxfrm (wchar_t * dest, const wchar_t * src, size_t count);

Die Funktion wcsxfrm () konvertiert die ersten zählweiten Zeichen der breiten Zeichenfolge, auf die src zeigt, in eine implementierungsdefinierte Form, und das Ergebnis wird an dem Speicherort gespeichert, auf den dest zeigt.

Das Verhalten dieser Funktion ist undefiniert, wenn:

  • Die Größe von dest ist kleiner als die erforderliche Größe.
  • dest und src überlappen sich.

wcsxfrm () Parameter

  • dest: Zeiger auf das Array, in dem die transformierte breite Zeichenfolge gespeichert ist.
  • src: Zeiger auf die nullterminierte breite Zeichenfolge, die transformiert werden soll.
  • count: Maximale Anzahl der zu konvertierenden breiten Zeichen.

wcsxfrm () Rückgabewert

Die Funktion wcsxfrm () gibt die Anzahl der transformierten breiten Zeichen zurück, mit Ausnahme des abschließenden null breiten Zeichens L ' 0'.

Beispiel: Wie funktioniert die Funktion wcsxfrm ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_COLLATE, "cs_CZ.UTF-8"); const wchar_t* s1 = L"u0068u0072u006eu0065u0063"; const wchar_t* s2 = L"u0063u0068u0072u0074"; wchar_t t1(20), t2(20); cout << "wcscoll returned " << wcscoll(s1,s2) << endl; cout << "Before transformation, " << "wcscmp returned " << wcscmp(s1,s2) << endl; wcsxfrm(t1,s1,10); wcsxfrm(t2,s2,10); cout << "After transformation, " << "wcscmp returned " << wcscmp(t1,t2) << endl; return 0; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 wcscoll gab -1 zurück Vor der Transformation gab wcscmp 1 zurück. Nach der Transformation gab wcscmp -1 zurück

Interessante Beiträge...