![](/img/trans.png)
[英]How can I cast an std::vector<const unsigned char> to a const std::vector<unsigned char>?
[英]How to initialise std::istringstream from const unsigned char* without cast or copy?
我有const unsigned char *p
和size_t len
描述的字節序列中的二進制數據。 我希望能夠將此數據傳遞給需要std::istream *
的 function 。
我想我應該能夠做到這一點,而無需復制數據、不安全的演員表或編寫新的 stream class。 但到目前為止,我失敗了。 任何人都可以幫忙嗎?
更新
感謝大家的評論。 這似乎是一個無法回答的問題,因為std::istream
使用char
操作,並且轉換在某些時候至少需要從unsigned char
轉換為 integer 。
務實的做法是這樣做:
std::string s(reinterpret_cast<const char*>(p), len);
std::istringstream i(s);
並將&i
傳遞給 function 期望std::istream *
。
你的答案還在抄襲。
你考慮過這樣的事情嗎?
const unsigned char *p;
size_t len;
std::istringstream str;
str.rdbuf()->pubsetbuf(
reinterpret_cast<char*>(const_cast<unsigned char*>(p)), len);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.