std:: memcmp
|
헤더 파일에 정의됨
<cstring>
|
||
|
int
memcmp
(
const
void
*
lhs,
const
void
*
rhs,
std::
size_t
count
)
;
|
||
lhs 와 rhs 가 가리키는 객체들을 unsigned char 배열로 재해석하고, 이 배열들의 첫 count 바이트를 비교합니다. 비교는 사전식 순서로 수행됩니다.
결과의 부호는 비교 대상 객체들에서 서로 다른 첫 번째 바이트 쌍의 값(둘 다 unsigned char 로 해석됨) 간의 차이 부호와 동일합니다.
목차 |
매개변수
| lhs, rhs | - | 비교할 메모리 버퍼에 대한 포인터 |
| count | - | 검사할 바이트 수 |
반환값
첫 번째로 다른 바이트( unsigned char 로 재해석됨)가 lhs 에서 rhs 의 해당 바이트보다 작을 경우 음수 값.
0 만약 count 바이트의 lhs 와 rhs 가 모두 동일한 경우.
lhs 에서 첫 번째로 다른 바이트가 rhs 의 해당 바이트보다 큰 경우 양의 값.
참고 사항
이 함수는
객체 표현
을 읽으며 객체 값을 읽지 않으며, 일반적으로 패딩이 없는 trivially-copyable 객체에만 의미가 있습니다. 예를 들어,
memcmp()
를
std::string
또는
std::vector
타입의 두 객체 사이에서 사용하면 내용을 비교하지 않으며,
memcmp()
를
struct
{
char
c
;
int
n
;
}
타입의 두 객체 사이에서 사용하면
c
와
n
의 값이 동일할 때 값이 다를 수 있는 패딩 바이트를 비교하게 되며, 패딩 바이트가 없더라도
int
는 엔디안을 고려하지 않고 비교됩니다.
예제
#include <cstring> #include <iostream> void demo(const char* lhs, const char* rhs, std::size_t sz) { std::cout << std::string(lhs, sz); const int rc = std::memcmp(lhs, rhs, sz); if (rc < 0) std::cout << " precedes "; else if (rc > 0) std::cout << " follows "; else std::cout << " compares equal to "; std::cout << std::string(rhs, sz) << " in lexicographical order\n"; } int main() { char a1[] = {'a', 'b', 'c'}; char a2[sizeof a1] = {'a', 'b', 'd'}; demo(a1, a2, sizeof a1); demo(a2, a1, sizeof a1); demo(a1, a1, sizeof a1); }
출력:
abc precedes abd in lexicographical order abd follows abc in lexicographical order abc compares equal to abc in lexicographical order
참고 항목
|
두 문자열을 비교합니다
(함수) |
|
|
두 문자열에서 지정된 수의 문자를 비교합니다
(함수) |
|
|
C documentation
for
memcmp
|
|