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

Функция strxfrm () в C ++ преобразует заданную строку байтов с завершающим нулевым символом в конце в форму, определяемую реализацией.

Функция strxfrm () преобразует строку таким образом, что сравнение двух преобразованных строк с помощью функции strcmp () дает тот же результат, что и сравнение исходных строк с помощью функции strcoll () в текущей локали C.

Например, x и y - две строки. a и b - две строки, образованные преобразованием x и y соответственно с помощью функции strxfrm. Тогда вызов strcmp (a, b) аналогичен вызову strcoll (x, y).

strxfrm () прототип

 size_t strxfrm (char * dest, const char * src, size_t count);

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

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

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

Он определен в заголовочном файле "> заголовочный файл.

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

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

strxfrm () Возвращаемое значение

Функция strxfrm () возвращает количество преобразованных символов, исключая завершающий нулевой символ ' 0'.

Пример: как работает функция strxfrm ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_COLLATE, "cs_CZ.UTF-8"); const char* s1 = "hrnec"; const char* s2 = "chrt"; char t1(20), t2(20); cout << "strcoll returned " << strcoll(s1,s2) << endl; cout << "Before transformation, " << "strcmp returned " << strcmp(s1,s2) << endl; strxfrm(t1,s1,10); strxfrm(t2,s2,10); cout << "After transformation, " << "strcmp returned " << strcmp(t1,t2) << endl; return 0; )

Когда вы запустите программу, вывод будет:

 strcoll вернул -1 Перед преобразованием strcmp вернул 1 После преобразования strcmp вернул -1

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