转换 std::vector<T> 为 char *

Convert std::vector<T> to char *

本文关键字:char gt lt std vector 转换      更新时间:2023-10-16

我正在尝试将向量转换为字符 * 以通过套接字发送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());
}