簡體   English   中英

轉換std :: vector <T> 給char *

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM