转换 std::vector<T> 为 char *
Convert std::vector<T> to char *
我正在尝试将向量转换为字符 * 以通过套接字发送T 的类型是一个简单的结构
struct CategoryStruct {
int ID;
char name[32];
};
std::vector<CategoryStruct> categories;
函数,我正在尝试转换的地方 -
char * Category::decodeCategoryToCharArray()
{
int structSize = sizeof(CategoryStruct),
currentByte = 0,
i = 0;
if(decoded)
delete [] decoded;
decoded = new char[structSize * categories.size()];
std::vector<CategoryStruct>::iterator start, end;
start = categories.begin();
end = categories.end();
for(; start != end; start++, i++)
{
memcpy(decoded+currentByte, &categories[i], structSize);
currentByte += structSize+1;
}
return decoded;
}
结束返回将为 ">
不需要转换,std::vector<CategoryStruct>
已经将数据存储在连续的内存区域中。 因此,您的函数可以归结为
std::vector<CategoryStruct> categories;
char * Category::decodeCategoryToCharArray()
{
return reinterpret_cast<char*>(categories.data());
}