小编Adm*_*mut的帖子

C++如何将ifstream内容(从文件)分配给带偏移量的字符串(istreambuf_iterator)

我尝试将二进制文件内容的一部分读入字符串.为什么是字符串?我需要这个用于我的消息协议(使用protobuf).

以下工作非常好:

std::string* data = new std::string();
std::ifstream ifs("C:\\data.bin", std::ios::binary);
data->assign((std::istreambuf_iterator<char>(ifs)), (std::istreambuf_iterator<char>()));
Run Code Online (Sandbox Code Playgroud)

但这是从头到尾读取文件.我想只阅读给定位置的零件.例如,从位置字节10开始:

std::string* data = new std::string();
std::ifstream ifs("C:\\data.bin", std::ios::binary);
ifs.seekg((10);
data->assign((std::istreambuf_iterator<char>(ifs)), ???????);
Run Code Online (Sandbox Code Playgroud)

但是如何调整结束或偏移?我没有找到任何例子.我知道ifstream.read()有缓冲区的例子.我在整个程序中使用了assign into string方法,并且真的很想找到一种方法来实现这一点.

谁能帮我?谢谢

c++ iterator ifstream offset assign

5
推荐指数
1
解决办法
447
查看次数

标签 统计

assign ×1

c++ ×1

ifstream ×1

iterator ×1

offset ×1