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