C ++ wcsxfrm () - biblioteka standardowa C ++

Funkcja wcsxfrm () w C ++ przekształca dany szeroki ciąg zakończony znakiem null w postać zdefiniowaną w implementacji.

Funkcja wcsxfrm () przekształca szeroki ciąg w taki sposób, że porównanie dwóch przekształconych szerokich ciągów za pomocą funkcji wcscmp () daje identyczny wynik, jak porównanie oryginalnych szerokich ciągów przy użyciu funkcji wcscoll () w bieżących ustawieniach regionalnych języka C.

Na przykład x i y to dwa szerokie ciągi. a i b to dwa szerokie ciągi utworzone przez przekształcenie odpowiednio x i y przy użyciu funkcji wcsxfrm.

Następnie,

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

Jest zdefiniowany w pliku nagłówkowym.

wcsxfrm () prototyp

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

Funkcja wcsxfrm () konwertuje pierwsze szerokie znaki z szerokiego 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ę.

wcsxfrm () Parametry

  • dest: wskaźnik do tablicy, w której przechowywany jest przekształcony szeroki ciąg.
  • src: wskaźnik do szerokiego łańcucha zakończonego znakiem null, który ma zostać przekształcony.
  • count: maksymalna liczba szerokich znaków do konwersji.

wcsxfrm () Wartość zwracana

Funkcja wcsxfrm () zwraca liczbę przekształconych szerokich znaków, z wyłączeniem kończącego zerowego znaku szerokiego L ' 0'.

Przykład: Jak działa funkcja 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; )

Po uruchomieniu programu wynik będzie następujący:

 wcscoll zwrócił -1 Przed transformacją wcscmp zwrócił 1 Po transformacji wcscmp zwrócił -1

Interesujące artykuły...