![](/img/trans.png)
[英]convert unsigned char* into std::vector<uint8_t>
[英]How to add char*/convert to std::vector<uint8_t[]>
我有一個std::vector<uint8_t[1115]>
,我想在其中存儲一個char*
。 我不明白如何將char *強制轉換為向量。 也許它很愚蠢,但是我嘗試了這個:
char* myCharArray = new char[1115];
std::vector<uint8_t[1115]> myVector;
myVector.push_back(reinterpret_cast<uint8_t*>(myCharArray));
我不明白為什么這行不通。 錯誤如下:
error: no matching function for call to ‘std::vector<unsigned char [1115]>::push_back(uint8_t*)’
您有兩個問題:
vector
的元素必須是可復制構造和可分配的,但數組不是。 這意味着您不能合法地擁有數組vector
。 如果您使用的是C ++ 11或更高版本,則可以使用std::vector<std::array<uint8_t, 1115>>
。 std::array
類型是數組周圍的可復制包裝器。
push_back
只需復制對象即可將其插入向量的對象。 您不能將char*
(或任何其他點)復制到數組。 但是,如果遵循我在(1)中的建議,則可以完全避免使用指針,而只需將其std::array<uint8_t, 1115> myCharArray;
。
如果您無法使用std::array
則可以使用std::vector<std::vector<uint8_t>>
,只需確保內部向量的大小正確即可。
您可能會很感興趣, 為什么大多數C ++中可能不需要原始指針或new
指針 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.