我在const char*指针指向的缓冲区中有一些数据.数据只是一个ASCII字符串.我知道它的大小.我希望能够以与从流中读取数据相同的方式读取它.我正在寻找一个允许我编写如下代码的解决方案:
// for example, data points to a string "42 3.14 blah"
MemoryStreamWrapper in(data, data_size);
int x;
float y;
std::string w;
in >> x >> y >> w;
Run Code Online (Sandbox Code Playgroud)
重要条件:不得以任何方式复制或更改数据(否则我只使用字符串流.据我所知,不能在不复制数据的情况下从const char指针创建字符串流. )
我需要在流上桥接两个库.
QDataStream which is a stream from Qt
Run Code Online (Sandbox Code Playgroud)
以及来自其他库的一些函数看起来像这样
void read_something(istream& i);
Run Code Online (Sandbox Code Playgroud)
我无法控制如何创建QDataStream,我不允许更改read_somthing函数的接口.
我能想到的第一件事就是编写一个继承istream并包装QDataStream的类.以前有人这样做过吗?
如果我认为不是正确的方式,我想知道实现这一目标的最佳方法是什么.
是否可以使用像std :: iostream这样的QFile?我很确定那里必须有一个包装纸.问题是在哪里?
我有另一个libs,它需要一个std :: istream作为输入参数,但在我的程序中我此时只有一个QFile.
我读过" Qt资源系统 "一文.在"压缩"段中,有关于如何通过rcc命令行中的参数关闭压缩的信息.但是rcc命令行是由qmake从pro文件自动生成的.如果我直接更改rcc命令行,它将在下一次qmake运行期间恢复到原始状态.
是否有可能在专业人士中关闭压缩?