可以使用带内存的istream

Possible to use an istream with memcpy

本文关键字:istream 内存 可以使      更新时间:2023-10-16

我正在开发一个c++应用程序,它使用了一个用C编写的库(StormLib)。该库具有将文件读取到void* buffer(我猜是char[])的函数。我想把它送到另一个库去处理。希望它可以用boost::iostreams::stream_bufferboost::asio::streambuf这样的东西来存储文件,以便通过任何方法读取。

我试过简单地传递一个istream(有一个boost::asio::streambuf打开)到函数,它给了我一个BADACCESS,因为它试图执行

memcpy((theFile),(myiStream),(full size of the file))

我基本上想要一种"比特袋"对象,可以很容易地移动到不同的方法,以结构化的方式转换数据,但我不知道我应该如何实现它。

在c++中,您想如何处理这些数据?如果你只想要原始数据,那么你可以(例如)只创建一个std::vector<char>, resize,这样它就足够大,可以容纳所有的数据*,然后传递一个指针到它的第一个元素。