Функция 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