📜  C++ memcmp()(1)

📅  最后修改于: 2023-12-03 15:13:54.689000             🧑  作者: Mango

C++ memcmp()

在C++中,memcmp()函数可以用来比较两个指针所指向的内存区域中的前N个字节是否相等。该函数定义在头文件<cstring>中。

语法
int memcmp(const void* ptr1, const void* ptr2, size_t num);

其中,ptr1ptr2分别是要比较的内存地址,num是要比较的字节数。

返回值

memcmp()函数按字节比较,如果ptr1所指向的内存区域小于ptr2所指向的内存区域,则返回一个负数;如果两个内存区域相等,则返回0;如果ptr1所指向的内存区域大于ptr2所指向的内存区域,则返回一个正数。

例子
#include <iostream>
#include <cstring>

int main() {
    const char* str1 = "Hello";
    const char* str2 = "Helao";
    int result = std::memcmp(str1, str2, 4);
    if (result < 0) {
        std::cout << "str1 is less than str2" << std::endl;
    }
    else if (result == 0) {
        std::cout << "str1 is equal to str2" << std::endl;
    }
    else if (result > 0) {
        std::cout << "str1 is greater than str2" << std::endl;
    }
    return 0;
}

以上代码会对str1str2的前4个字符进行比较,由于两个字符串第4个字符不同(la),因此输出结果是str1 is less than str2

注意事项
  • memcmp()函数并不考虑字符串的结束标志\0,因此在比较字符串时需要指定比较的字节数。
  • memcmp()函数可以用来比较任意类型的内存区域,而不只是字符串。
  • 在比较浮点数时,要特别注意精度问题,由于浮点数在内存中的存储格式比较复杂,因此最好使用专门的库函数进行比较。