Функцията wcsxfrm () в C ++ преобразува даден нулев прекратен широк низ в дефинирана форма на изпълнение.
Функцията wcsxfrm () трансформира широк низ, така че сравняването на два трансформирани широки низа с помощта на функцията wcscmp () води до идентичен резултат като сравняване на оригиналните широки низове с помощта на функцията wcscoll () в текущия локал C.
Например, x и y са две широки низове. a и b са две широки низове, образувани чрез трансформиране на x и y съответно с помощта на функцията wcsxfrm.
Тогава,
wcscmp (a, b) = wcscoll (x, y)
Той се определя в заглавния файл.
прототип на wcsxfrm ()
size_t wcsxfrm (wchar_t * dest, const wchar_t * src, count_t count);
Функцията wcsxfrm () преобразува първите броени широки символи от широкия низ, посочен от src, в дефинирана форма на изпълнение и резултатът се съхранява в мястото на паметта, посочено от dest.
Поведението на тази функция е неопределено, ако:
- размер на дес е по-малък от необходимия размер.
- dest и src се припокриват.
wcsxfrm () Параметри
- dest: указател към масива, където се съхранява преобразуваният широк низ.
- src: указател към нулевия прекратен широк низ, който трябва да се трансформира.
- брой: максимален брой широки символи за конвертиране.
wcsxfrm () Върната стойност
Функцията wcsxfrm () връща броя трансформирани широки символи, с изключение на завършващия нулев широк символ L ' 0'.
Пример: Как работи функцията 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; )
Когато стартирате програмата, изходът ще бъде:
wcscoll върна -1 Преди трансформация, wcscmp върна 1 След трансформация, wcscmp върна -1