C ++ strxfrm () - C ++ Standardbibliothek

Die Funktion strxfrm () in C ++ transformiert eine bestimmte nullterminierte Bytezeichenfolge in eine implementierungsdefinierte Form.

Die Funktion strxfrm () transformiert die Zeichenfolge so, dass der Vergleich zweier transformierter Zeichenfolgen mit der Funktion strcmp () das gleiche Ergebnis liefert wie der Vergleich der ursprünglichen Zeichenfolgen mit der Funktion strcoll () im aktuellen Gebietsschema C.

Zum Beispiel sind x und y zwei Zeichenfolgen. a und b sind zwei Strings, die durch Transformieren von x bzw. y unter Verwendung der strxfrm-Funktion gebildet werden. Dann ist ein Aufruf von strcmp (a, b) der gleiche wie der Aufruf von strcoll (x, y).

strxfrm () Prototyp

 size_t strxfrm (char * dest, const char * src, size_t count);

Die Funktion strxfrm () konvertiert die ersten Zählzeichen der 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.

Es ist in der Header-Datei "> Header-Datei definiert.

strxfrm () Parameter

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

strxfrm () Rückgabewert

Die Funktion strxfrm () gibt die Anzahl der transformierten Zeichen mit Ausnahme des abschließenden Nullzeichens ' 0' zurück.

Beispiel: Wie funktioniert die Funktion strxfrm ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_COLLATE, "cs_CZ.UTF-8"); const char* s1 = "hrnec"; const char* s2 = "chrt"; char t1(20), t2(20); cout << "strcoll returned " << strcoll(s1,s2) << endl; cout << "Before transformation, " << "strcmp returned " << strcmp(s1,s2) << endl; strxfrm(t1,s1,10); strxfrm(t2,s2,10); cout << "After transformation, " << "strcmp returned " << strcmp(t1,t2) << endl; return 0; )

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

 strcoll gab -1 zurück Vor der Transformation gab strcmp 1 zurück. Nach der Transformation gab strcmp -1 zurück

Interessante Beiträge...