我有以下数据需要添加到 void 缓冲区中:
MyStruct somedata; // some struct containing ints or floats etc.
string somestring;
我该怎么做?
这是我的缓冲区分配:
void *buffer = (void *)malloc(datasize);
我如何首先将 somedata
添加到缓冲区(假设需要 20 个字节),然后在 20 个字节之后是可变大小的字符串。我正在考虑逐字节读取结构并添加到缓冲区,但这感觉很愚蠢,必须有一些更简单的方法......?
编辑: 我希望它等于: fwrite( struct1 ); fwrite( struct2 );它们是按顺序调用的,但我不想写入文件,而是写入一个空缓冲区。
编辑 2:让它工作,这里是代码:
char *data = (char *)malloc(datasize);
unsigned int bufferoffset = 0;
for(...){
MyStruct somedata; // some POD struct containing ints or floats etc.
string somestring;
... stuff ...
// add to buffer:
memcpy(data+bufferoffset, &somedata, sizeof(MyStruct));
bufferoffset += sizeof(MyStruct);
memcpy(data+bufferoffset, somestring.c_str(), str_len);
bufferoffset += str_len;
}
有什么要解决的吗?
最佳答案
memcpy(buffer, &somedata, sizeof(MyStruct));
strcpy(buffer + sizeof(MyStruct), somestring.c_str());
这会将字符串复制为 c 字符串。
关于c++ - 如何将不同的数据类型推送到 void 缓冲区中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4173343/