[英]Convert std::vector<T> to char *
我正在嘗試將向量轉換為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());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.