Namespaces
Variants

std:: wmemcmp

From cppreference.net
헤더 파일에 정의됨 <cwchar>
int wmemcmp ( const wchar_t * lhs, const wchar_t * rhs, std:: size_t count ) ;

lhs rhs 가 가리키는 와이드 문자 배열들의 첫 count 개의 와이드 문자를 비교합니다. 비교는 사전식 순서로 수행됩니다.

결과의 부호는 비교 중인 배열에서 서로 다른 첫 번째 와이드 문자 쌍의 값 차이의 부호입니다.

만약 count 가 0이면, 함수는 아무 작업도 수행하지 않습니다.

목차

매개변수

lhs, rhs - 비교할 와이드 문자 배열에 대한 포인터
count - 검사할 와이드 문자 수

반환값

첫 번째로 다른 와이드 문자의 값이 lhs 에서 rhs 의 해당 와이드 문자 값보다 작은 경우 음수 값: lhs rhs 보다 사전식 순서에서 앞선다는 것을 의미합니다.

0 만약 count 개의 모든 와이드 문자들이 lhs rhs 에서 동일하다면.

첫 번째로 다른 와이드 문자의 값이 lhs 에서 rhs 의 해당 와이드 문자 값보다 클 경우 양수 값: rhs lhs 보다 사전식 순서에서 앞에 옵니다.

참고 사항

이 함수는 로캘에 민감하지 않으며 검사하는 wchar_t 객체의 값에 주의를 기울이지 않습니다: 널(null) 문자와 유효하지 않은 와이드 문자도 비교 대상에 포함됩니다.

예제

#include <clocale>
#include <cwchar>
#include <iostream>
#include <locale>
#include <string>
void demo(const wchar_t* lhs, const wchar_t* rhs, std::size_t sz)
{
    std::wcout << std::wstring(lhs, sz);
    int rc = std::wmemcmp(lhs, rhs, sz);
    if (rc == 0)
        std::wcout << " compares equal to ";
    else if (rc < 0)
        std::wcout << " precedes ";
    else if (rc > 0)
        std::wcout << " follows ";
    std::wcout << std::wstring(rhs, sz) << " in lexicographical order\n";
}
int main()
{
    std::setlocale(LC_ALL, "en_US.utf8");
    std::wcout.imbue(std::locale("en_US.utf8"));
    wchar_t a1[] = {L'α',L'β',L'γ'};
    constexpr std::size_t sz = sizeof a1 / sizeof *a1;
    wchar_t a2[sz] = {L'α',L'β',L'δ'};
    demo(a1, a2, sz);
    demo(a2, a1, sz);
    demo(a1, a1, sz);
}

가능한 출력:

αβγ precedes αβδ in lexicographical order
αβδ follows αβγ in lexicographical order
αβγ compares equal to αβγ in lexicographical order

참고 항목

두 개의 와이드 문자열을 비교
(함수)
두 개의 버퍼를 비교
(함수)
두 개의 와이드 문자열에서 지정된 수의 문자를 비교
(함수)
C documentation for wmemcmp