我需要将数据从二进制文件流式传输到字符串流:

stringstream body;
body << std::ifstream( path.string().c_str(), ios::binary).rdbuf();


但是它会从头到尾读取整个文件。

如何从200th字节开始将文件读取到stringstream,然后转到3000th

最佳答案

我知道没有办法直接将文件的读取缓冲区读取到stringstream中。那并不意味着一个人不存在。这只是意味着我不知道我的想法。 :-)

您可能要探索的一个选项是将数据读取到临时缓冲区中,然后使用string方法将该stringstream放入str()中。可能如下所示:

ifstream input(/* ... filename ... */, ios::binary)
input.seekg(streampos(200)); // Seek to the desired offset.

char buffer[3000 - 200]; // Set up a buffer to hold the result.
input.read(buffer, streamsize(sizeof(buffer)));

stringstream myStream(buffer); // Convert to a stringstream


希望这可以帮助!

关于c++ - 如何从文件中读取部分到stringstream?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5723077/

10-12 01:26