是否有原生C++替代 C "memcmp"?

Is there a native C++ alternative to the C's "memcmp"?

本文关键字:memcmp 替代 原生 C++ 是否      更新时间:2023-10-16

c++或Boost是否有一个函数可以像C的memcmp一样比较两个内存块?

我试过谷歌,但我只得到"memcmp"功能。

如果你想要一个既能处理指针又能处理STL迭代器的函数,可以看看<algorithm>中的std::equal

我认为std::equal是做std::memcmp的c++方式(这确实仍然是c++,但std::memcmp不处理迭代器对象)。


#include <iostream>
#include <vector>
#include <algorithm>
int 
main (int argc, char *argv[])
{   
  int  a1[] = {1,2,3,4};
  int  a2[] = {1,9,3,5};
  int * p1  = new int[4];
  std::vector<int> vec (a2, a2+4);

  *(p1++) = 1; *(p1++) = 2;
  *(p1++) = 3; *(p1++) = 4;
  p1 -= 4;

  if (std::equal (a1, a1+4, p1)) {
    std::cout << "memory of p1 == memory of a1n";
  }   
  if (std::equal (vec.begin (), vec.end (), p1) == false) {
    std::cout << "memory of p1 != memory of vecn";
  }   
}   

输出
memory of p1 == memory of a1
memory of p1 != memory of vec

您也可以在c++中使用memcmp。在c++中也是原生的。

所有你需要做的是,包括<cstring>,然后使用全限定名称std::memcmp而不是memcmp。这是因为它在std命名空间中,就像所有其他标准库函数和类一样。

memcmp是c++标准库的一部分,在<cstring>中可用。由于您的要求是比较2块内存(处理原始内存),您必须使用memcmp或库中的其他函数。

如果你不想处理内存,那么使用c++容器来抽象内存管理。那么你要处理的就是对象!

使用memcmp。这是一个完全合法的c++函数

memcmp是c++标准库的一部分。