C ++ wcsxfrm () - Стандартная библиотека C ++

Функция 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, size_t count);

Функция wcsxfrm () преобразует первые широкие символы count широкой строки, на которую указывает src, в форму, определяемую реализацией, и результат сохраняется в той области памяти, на которую указывает dest.

Поведение этой функции не определено, если:

  • размер dest меньше необходимого.
  • dest и src перекрываются.

Параметры wcsxfrm ()

  • dest: указатель на массив, в котором хранится преобразованная широкая строка.
  • src: указатель на широкую строку с завершающим нулем, которая должна быть преобразована.
  • count: максимальное количество широких символов для преобразования.

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

Интересные статьи...