【问题标题】:How to read part from file into stringstream?如何将文件中的部分读入字符串流?
【发布时间】:2011-04-19 21:43:02
【问题描述】:

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

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

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

如何将文件从200th字节开始读取到字符串流中,并转到3000th

【问题讨论】:

    标签: c++ file


    【解决方案1】:

    据我所知,无法直接从文件的读取缓冲区读取到stringstream。这并不意味着不存在。这只是意味着我不知道我的头顶。 :-)

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

    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
    

    希望这会有所帮助!

    【讨论】:

    • 我们可以从char数组或字符串对象初始化stringstream而不复制内容吗?
    猜你喜欢
    • 2011-05-04
    • 1970-01-01
    • 2011-12-05
    • 2020-08-04
    • 2017-11-01
    • 1970-01-01
    • 2014-05-24
    • 2010-12-12
    • 2018-12-25
    相关资源
    最近更新 更多