簡體   English   中英

如何在沒有強制轉換或復制的情況下從 const unsigned char* 初始化 std::istringstream?

[英]How to initialise std::istringstream from const unsigned char* without cast or copy?

我有const unsigned char *psize_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.

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