簡體   English   中英

如何將char *轉換為std :: vector?

[英]How to convert char* to std::vector?

我有一個char *變量:

// char* buffer;
// ...
fread (buffer, 1, lSize, pFile);
// ...

我怎樣才能將它轉換為std :: vector? 施法將給我一個錯誤。

std::vector<char> data(buffer, buffer + size);

詹姆斯麥克納利斯的回答是更好的,如果你能做到這一點。

為什么不使用std::vector開頭:

std::vector<char> buffer(lSize);
std::fread(&buffer[0], 1, buffer.size(), pFile);

你不能在char *和vector之間進行轉換; 指針轉換導致結果與輸入具有完全相同的字節,因此除非您正在執行低級位操作,否則通常是個壞主意。

假設你想構建一個chars向量,你可以創建一個std::vector<char>類型的新向量對象(注意你需要提供向量元素的類型),並通過傳遞它來從數組中初始化它。開始和結束指向構造函數的指針:

std::vector<char> vec(buffer, buffer+lSize);

請注意,第二個參數是“結束指針”,在C ++中很常見。 重要的是,它是緩沖區結束的字符指針,而不是緩沖區中的最后一個字符。 換句話說,開始是包容性的,但結束是排他性的。

另一種可能性(因為你正在處理字符)是使用std::string代替。 這可能是您想要的也可能不是(取決於您是將char *視為字符串還是字節數組)。 您可以以相同的方式構建它:

std::string str(buffer, buffer+lSize);

或者使用不同的構造函數,將大小作為第二個參數:

std::string str(buffer, lSize);

暫無
暫無

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

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