Пространства имён
Варианты
Действия

std::strxfrm

Материал из cppreference.com
< cpp‎ | string‎ | byte

Определено в заголовочном файле <cstring>
std::size_t strxfrm( const char* dest, const char* src, std::size_t count );
Преобразования нулевым байтом строки, на которую указывает src в процессе осуществления определенной форме, что сравнение двух строк преобразуются с std::strcmp дает тот же результат, сравнивая исходные строки с std::strcoll, в текущей локали C.
Оригинал:
Transforms the null-terminated byte string pointed to by src into the implementation-defined form such that comparing two transformed strings with std::strcmp gives the same result as comparing the original strings with std::strcoll, in the current C locale.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Первые символы count преобразованной строки написаны до места назначения, включая завершающий нулевой символ, а длина полного преобразована строка возвращается, исключая завершающий нулевой символ.
Оригинал:
The first count characters of the transformed string are written to destination, including the terminating null character, and the length of the full transformed string is returned, excluding the terminating null character.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Если count является 0, то dest имеет право быть нулевой указатель.
Оригинал:
If count is 0, then dest is allowed to be a null pointer.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

Содержание

[править] Notes

Правильная длина буфера, которое может получить всю преобразована строка 1+std::strxfrm(NULL, src, 0)
Оригинал:
The correct length of the buffer that can receive the entire transformed string is 1+std::strxfrm(NULL, src, 0)
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Параметры

dest -
указатель на первый элемент массива, где преобразованной строки будут записаны
Оригинал:
pointer to the first element of the array where the transformed string will be written
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
src -
указатель на первый символ нулевым байтом строки для преобразования
Оригинал:
pointer to the first character of a null-terminated byte string to transform
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
count -
Максимальное количество символов, которые будут написаны
Оригинал:
maximum number of characters to be written
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Возвращаемое значение

Длина преобразованной строки, не включая завершающий нулевой символ.
Оригинал:
The length of the transformed string, not including the terminating null-character.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Пример

#include <iostream>
#include <iomanip>
#include <cstring>
 
int main()
{
    std::setlocale(LC_COLLATE, "cs_CZ.iso88592");
 
    std::string in1 = "hrnec";
    std::string out1(1+std::strxfrm(nullptr, in1.c_str(), 0), ' ');
    std::string in2 = "chrt";
    std::string out2(1+std::strxfrm(nullptr, in2.c_str(), 0), ' ');
 
    std::strxfrm(&out1[0], in1.c_str(), out1.size());
    std::strxfrm(&out2[0], in2.c_str(), out2.size());
 
    std::cout << "In the Czech locale: ";
    if(out1 < out2)
         std::cout << in1 << " before " << in2 << '\n';
    else
         std::cout << in2 << " before " << in1 << '\n';
 
    std::cout << "In lexicographical comparison: ";
    if(in1 < in2)
         std::cout << in1 << " before " << in2 << '\n';
    else
         std::cout << in2 << " before " << in1 << '\n';
 
}

Вывод:

In the Czech locale: hrnec before chrt
In lexicographical comparison: chrt before hrnec

[править] См. также

преобразования строки широких, так что wcscmp бы тот же результат, как wcscoll
Оригинал:
transform a wide string so that wcscmp would produce the same result as wcscoll
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(функция) [edit]
[virtual]
преобразует строку так, чтобы сортировки можно заменить сравнение
Оригинал:
transforms a string so that collation can be replaced by comparison
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(virtual protected std::collate функция-член) [edit]
сравнивает две строки в соответствии с текущей локали
Оригинал:
compares two strings in accordance to the current locale
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(функция) [edit]
C documentation for strxfrm