listing for W
wcsxfrm - Transform wide-character strings for collation in the current
const wchar_t *ws2,
size_t n );
Standard C Library (libc)
Interfaces documented on this reference page conform to industry standards
Refer to the standards(5) reference page for more information about
industry standards and associated tags.
ws1 Contains a pointer to the destination wide-character string.
Contains a pointer to the source wide-character string.
n Specifies the maximum number of wide-character codes to place into the
array specified by ws1.
The wcsxfrm() function is used to transform the wide-character string
specified by the ws2 parameter into a string of wide-character codes based
on the collation values of the wide characters in the current setting of
the LC_COLLATE locale category. No more than n wide characters (including
the terminating null wide character) are copied into the array specified by
the ws1 parameter. When two transformed wide-character strings are
obtained and the transformed strings are compared using wcscmp(), the
result is the same as that obtained by a direct call to wcscoll() on the
two original wide-character strings.
The application can call wcsxfrm() with ws1 as a null pointer to determine
the number of wide characters to allocate for the ws1 parameter. For
example, the following expression calculates the size of ws1:
1 + wcsxfrm(NULL, ws2, 0)
As shown in this example, the n parameter must be 0 (zero) when ws1 is a
When operating on overlapping strings, the behavior of the wcsxfrm()
function is unreliable.
If an application does multiple comparisons based on the current locale's
collation values and uses the same set of text strings, the wcsxfrm()
transformation function in conjunction with the wcscmp() function may be
more efficient than the wcscoll() collation function. This is because the
string is transformed based on the locale tables only once. However, the
transformation function must convert all characters in the string for each
level of a multilevel collation. In comparison, the collation function
stops comparing characters at the first inequality. These tradeoffs make
the most efficient method for a specific application dependent on the
number of repeated comparisons of strings within the set, the number of
collation levels for the current locale, and the values of the strings
within the set.
If the ws1 parameter is a wide-character null pointer, the wcsxfrm()
function returns the number of wide-character elements (not including the
terminating null wide character) required to store the transformed wide-
character string. If the count specified by the n parameter is sufficient
to hold the transformed string in the ws1 parameter (including the
terminating null wide character) the return value is set to the actual
number of wide-character elements placed in the ws1 parameter, not
including the terminating null wide character. If the return value is equal
to or greater than the value specified by the n parameter, the contents of
the array pointed to by the ws1 parameter are indeterminate.
On error, the wcsxfrm() function returns (size_t)-1 and sets errno to
indicate the error.
If any the following conditions occur, the wcsxfrm() function sets errno to
the corresponding value:
The ws2 parameter contains wide-character codes outside the domain of
the collating sequence defined by the current locale.
[Tru64 UNIX] There was insufficient memory available to allocate
temporary storage for this operation.
Functions: setlocale(3), string(3), wcscmp(3), wcscoll(3)
listing for W