我需要将数据从二进制文件传输到字符串流:
stringstream body;
body << std::ifstream( path.string().c_str(), ios::binary).rdbuf();
但它从开始到结束时都读取了整个文件。
如何从200th
字节开始读取字符串流的文件,然后转到3000th
?
答案 0 :(得分:4)
我无法直接从文件的读缓冲区读取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
希望这有帮助!