Funkcja strxfrm () w C ++ przekształca dany ciąg bajtów zakończony wartością pustą w postać zdefiniowaną w implementacji.
Funkcja strxfrm () przekształca łańcuch w taki sposób, że porównanie dwóch przekształconych łańcuchów za pomocą funkcji strcmp () daje identyczny wynik, jak porównanie oryginalnych łańcuchów za pomocą funkcji strcoll () w bieżących ustawieniach regionalnych języka C.
Na przykład x i y to dwa ciągi. a i b to dwa łańcuchy utworzone przez przekształcenie odpowiednio x i y przy użyciu funkcji strxfrm. Następnie wywołanie strcmp (a, b) jest tym samym, co wywołanie strcoll (x, y).
strxfrm () prototyp
size_t strxfrm (char * dest, const char * src, size_t count);
Funkcja strxfrm () konwertuje pierwsze zliczane znaki ciągu wskazywanego przez src na postać zdefiniowaną w implementacji, a wynik jest przechowywany w lokalizacji pamięci wskazywanej przez dest.
Zachowanie tej funkcji jest nieokreślone, jeśli:
- rozmiar dest jest mniejszy niż wymagany rozmiar.
- dest i src nakładają się.
Jest zdefiniowany w pliku nagłówkowym "> plik nagłówkowy.
strxfrm () Parametry
- dest: wskaźnik do tablicy, w której przechowywany jest przekształcony ciąg.
- src: wskaźnik do łańcucha zakończonego znakiem null, który ma zostać przekształcony.
- count: maksymalna liczba znaków do konwersji.
strxfrm () Zwracana wartość
Funkcja strxfrm () zwraca liczbę przekształconych znaków, z wyłączeniem kończącego znaku null „ 0”.
Przykład: Jak działa funkcja 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; )
Po uruchomieniu programu wynik będzie następujący:
strcoll zwrócił -1 Przed transformacją strcmp zwrócił 1 Po transformacji strcmp zwrócił -1