21xrx.com
2024-12-22 22:39:36 Sunday
登录
文章检索 我的文章 写文章
C++中使用memcpy复制字符串
2023-07-04 22:16:27 深夜i     --     --
C++ memcpy 字符串 复制 编程技巧

在C++中,我们经常需要将一个字符串复制到另一个字符串中。常见的方法是使用strcpy函数,其功能是将源字符串的内容复制到目标字符串中。但是,如果我们需要复制的字符串是一个数组或结构体,那么这个方法就会出现问题。因为strcpy只能复制字符串,不能复制其他数据类型的变量。那么在这种情况下,我们可以使用C++提供的另一个函数——memcpy。

memcpy函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址的起始位置,其声明如下:


void* memcpy(void* dest, const void* src, size_t count);

可以看到,函数接受三个参数:

- dest:目标内存地址的起始位置,指向要复制到的目标内存;

- src:源内存地址的起始位置,指向要复制的源内存;

- count:要复制的字节数。

memcpy函数可以拷贝任意类型的数据,包括用户自定义的结构体和数组。下面是一个使用memcpy函数复制结构体的例子:


#include <iostream>

#include <cstring>

using namespace std;

struct Student {

  int id;

  char name[10];

  float score;

};

int main() {

  Student stu1 = 1001;

  Student stu2;

  memcpy(&stu2, &stu1, sizeof(Student)); // 使用memcpy复制结构体

  cout << "stu2.id: " << stu2.id << endl;

  cout << "stu2.name: " << stu2.name << endl;

  cout << "stu2.score: " << stu2.score << endl;

  return 0;

}

在上面的例子中,我们定义了一个结构体Student,包含了一个整型的学生编号、一个字符型的学生姓名和一个浮点型的学生分数。然后我们定义了两个结构体变量stu1和stu2,用stu1初始化结构体,然后用memcpy来复制结构体到stu2中。

最后输出的结果为:


stu2.id: 1001

stu2.name: Tom

stu2.score: 85.5

可以看到,使用memcpy函数成功地将结构体stu1的内容复制到了结构体stu2中。

总之,memcpy函数是一个非常有用的函数,在C++中使用它可以方便地复制各种类型的数据,特别是复制结构体和数组。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复