This example shows how to collect character collating weights from Unicode strings using the specified locale object.
#include <stdio.h> #include <unidef.h> int main(void) { LocaleObject locale_object = NULL; UniChar *pucs1; UniChar *pucs2 = L"computer"; int num_elems = 8; int num_elems_trx = 0; int result = 0; int rc = ULS_SUCCESS; /*****************************************************************/ /* Assumes LANG environment variable set to a valid locale name, */ /* such as fr_FR */ /*****************************************************************/ rc = UniCreateLocaleObject(UNI_UCS_STRING_POINTER, (UniChar *)L"", &locale_object); if (rc != ULS_SUCCESS) { printf("UniCreateLocaleObject error: return code = %u\n", rc); return 1; } /********************************************************************/ /* Calculate the space needed for the collating weights */ /********************************************************************/ num_elems = UniStrxfrm (locale_object, NULL, pucs2, 0); pucs1 = (UniChar *) malloc((num_elems + 1) * sizeof(UniChar)); if(!pucs1) return 1; /********************************************************************/ /* Obtain the collating weights for the Unicode string. */ /* num_elems_trx should be less than num_elems */ /********************************************************************/ num_elems_trx = UniStrxfrm (locale_object, pucs1, pucs2, num_elems + 1); if(num_elems_trx >= (num_elems + 1)) { printf("UniStrxfrm error:\n"); return 1; } return (ULS_SUCCESS); }