簡體   English   中英

什么是“ std :: vector” <unsigned char> 數據=示例”?

[英]What is “std::vector<unsigned char> Data = example”?

std::vector<unsigned char> Data = example

我在互聯網上的某個地方找到了它,我認為它會將未知大小的字節數組寫入給定地址,但是我不確定。 誰能解釋這是什么?

如果這不能滿足我的要求,那么有人可以幫助我產生一個C ++函數,該函數將地址和字節作為參數,然后將其寫入該地址,即:

myfunction(0xaddress, {0x10, 0x11, 0x12}); // something like this

向量的=運算符將復制右值的內容(假設右值是具有相同類型的vector類型或實現從該相同類型的向量轉換的類的類)。

沒有地址僅被復制到這里。

如果要向地址寫入x個字節的字節,則有許多選擇。

void myfunction(void* address, size_t count, const unsigned char data[])
{..}

const unsigned char bytes[] = {0x10, 0x11, 0x12};
myfunction (address, 3, bytes);

第二個參數count是數組的長度。
或具有可變函數:

void myfunction(void* address, size_t count, ...)
{..}

myfunction (address, 3, 0x10, 0x11, 0x12);

在所有情況下,您都需要明確給出字節數; 編譯器無法從數據中推斷出這一點。

如果要使用向量,則可以,但是在調用該函數之前,需要先填充向量,效率不高。

唯一不需要自己提供計數的情況是,如果所有字節的值都不為0,則可以寫

void myfunction(void* address, const char* str)
{..}

myfunction (address, "\x10\x11\x12");

因為您可以使用strlen!

編輯:此外, std::basic_string<unsigned char>將值得研究。 但是在這里,給它一個包含\\x00值的值也不是一件容易的事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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