Namespaces
Variants

std:: strxfrm

From cppreference.net
헤더 파일에 정의됨 <cstring>
std:: size_t strxfrm ( char * dest, const char * src, std:: size_t count ) ;

src 가 가리키는 널 종료 바이트 문자열을 구현 정의 형태로 변환하여, 현재 C 로케일에서 std::strcmp 로 변환된 두 문자열을 비교하는 것이 원본 문자열을 std::strcoll 로 비교하는 것과 동일한 결과를 제공하도록 합니다.

변환된 문자열의 첫 번째 count 개의 문자는 종료 널 문자를 포함하여 대상에 기록되며, 전체 변환된 문자열의 길이는 종료 널 문자를 제외하고 반환됩니다.

dest 배열이 충분히 크지 않을 경우 동작은 정의되지 않습니다. 동작은 정의되지 않습니다 만약 dest src 가 겹치는 경우.

만약 count 0 이면, dest 는 null 포인터가 허용됩니다.

목차

참고 사항

전체 변환된 문자열을 수신할 수 있는 올바른 버퍼의 길이는 1 + std :: strxfrm ( nullptr, src, 0 ) 입니다.

이 함수는 동일한 문자열 또는 문자열 집합을 사용하여 여러 로케일 의존 비교를 수행할 때 사용됩니다. 왜냐하면 모든 문자열을 한 번만 변환하기 위해 std::strxfrm 을 사용하고, 이후 변환된 문자열들을 std::strcmp 로 비교하는 것이 더 효율적이기 때문입니다.

매개변수

dest - 변환된 문자열이 기록될 배열의 첫 번째 요소를 가리키는 포인터
src - 변환할 null 종료 바이트 문자열의 첫 번째 문자를 가리키는 포인터
count - 기록될 최대 문자 수

반환값

변환된 문자열의 길이로, 종료 널 문자는 포함하지 않습니다.

예제

#include <cassert>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <string>
int main()
{
    char* loc = std::setlocale(LC_COLLATE, "cs_CZ.iso88592");
    assert(loc);
    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 와 동일한 결과를 생성하도록 함
(함수)
[virtual]
문자열을 변환하여 비교로 콜레이션을 대체할 수 있도록 함
( std::collate<CharT> 의 가상 protected 멤버 함수)
현재 로캘에 따라 두 문자열을 비교함
(함수)
C documentation for strxfrm