如何从const unsigned char*初始化std::istringstream,无需强制转换或复制
How to initialise std::istringstream from const unsigned char* without cast or copy?
我有由const unsigned char *p
和size_t len
描述的字节序列中的二进制数据。我希望能够将此数据传递给期望std::istream *
的函数。
我认为我应该能够做到这一点,而无需复制数据,不安全的强制转换或编写新的流类。但到目前为止,我失败了。有人能帮忙吗?
感谢大家的评论。这似乎是一个无法回答的问题,因为std::istream
与char
一起操作,并且转换在某些时候至少需要从unsigned char
转换一个整数。
实用的方法是这样做:
std::string s(reinterpret_cast<const char*>(p), len);
std::istringstream i(s);
并将&i
传递给期望std::istream *
的函数
你的答案还是抄袭。
你考虑过这样的事情吗?
const unsigned char *p;
size_t len;
std::istringstream str;
str.rdbuf()->pubsetbuf(
reinterpret_cast<char*>(const_cast<unsigned char*>(p)), len);
相关文章:
- 复制列表初始化的隐式转换的等级是多少
- 不能将复制初始化与隐式转换的多个步骤一起使用
- 复制构造函数隐式转换问题
- 将文件复制到自定义位置,存在字符串转换问题
- 在 Cython 中将C++向量转换为 numpy 数组,而无需复制
- 有没有办法复制派生类指针的向量而不将其强制转换为基类?
- 复制交换习惯用法-我们可以在这里使用动态强制转换操作吗
- 为什么转换运算符调用复制构造函数两次,而等效函数只调用它一次
- 在不复制数据的情况下,将double数组转换为只有double成员的structs数组
- r-在Rcpp和C++之间转换矢量(使用Rcpp::as或Rcpp:::wrap)是否会创建一个新的矢量并复制元素
- 如何在不复制数据的情况下将 cv::Mat 转换为 2d 标准::矢量
- 为什么在使用转换构造函数编译代码时需要 const 复制构造函数?
- 复制初始化 - 从 'int' 类型转换为非标量类型
- 标准::列表转换和复制
- 我的lambda在复制构建期间没有正确转换捕获的"this"
- 如何在不复制数据的情况下在平面数组和多维数组之间进行转换?
- 尝试"复制"shared_ptr向上转换行为会导致复制构造函数上的无限递归(导致段错误)
- 将std ::复制转换为std :: memcpy不起作用
- 旨在复制/转换对象的功能系列的模板
- 我如何结合就地转换和复制转换?< / h1 >