将内存从char *复制到较大char *中的位置

时间:2013-12-04 02:48:19

标签: c++ pointers

我正在尝试创建将六个变量放入char*的代码,它们几乎都是多字节变量。因为他们都进入相同的char *我希望能够尽可能容易地将数据复制到char *中。

如果没有"标准"对我这样做的方式,我可以很容易地为我做一个处理这个问题的内联函数。然而,我希望有一种简单的方法可以做到这一点,也许就像:

memcpy(char* target, char* source, int target_start_position, int source_length)

所以要详细说明: 我将所有数据从源复制到目标。我将数据复制到target[target_start_position]然后source_length仅仅是为了知道要从源读取多少数据的函数。


我实际尝试过的。也许你可以看到我的思考过程是什么。

=================

这就像我希望得到的东西一样简单: (我意识到它并不起作用,因为我将指针指定为值)

char* data;
unsigned __int64 pos = 0;

int string_len = sName.size();
unsigned __int64 data_size = sizeof(string_len) + string_len + (sizeof(int) * 10) + 3;
data = new char[data_size];

data[pos] = (char const*)(&string_len);
pos += sizeof(string_len);

data[pos] = (char const*)(&sName);
pos += string_len;

data[pos] = (char const*)(&iStatPoints);
pos += sizeof(int);

注意:我为标题道歉,这是描述我能想到的问题的最精确方式。

1 个答案:

答案 0 :(得分:1)

您可以使用指针算法获得所需的效果。例如,您可以按如下方式实现所需的功能:

void *memcpy2(void *dest, const void *src, size_t offset, size_t length) {
  return memcpy((char*)dest + offset, src, length);
}