我有一个二进制文件 a.bin,其中包含 768 字节。
我想将字节 16-256、272-512、528-768 放入
char data[720]
我做了类似的事情
ifstream a1;
a1.open("a.bin", ios::in|ios::binary)
char tmp[256]
a1.read(tmp,256)
然后我做了一些循环并在逻辑中将 tmp 复制到 data[720] 。但这看起来真的很愚蠢。所以我想问一下
-
如何将数据读取到字符数组的特定位置?
a1.read(tmp[2],2) // 不允许,如何实现?
-
怎样才能跳过某一天呢?
a1.read(tmp16,16);我可以用它来跳转 16 个字节,而不必使用 tmp16,但它看起来很难看。
我相信ignore http://en.cppreference.com/w/cpp/io/basic_istream/ignore是要走的路。
You go.
a1.ignore(16); // [1]
a1.read(data, 256-16); // [2]
a1.ignore(272-256); // [3]
a1.read(&data[256-16], 512-272); // [4]
// and so on
- 忽略第一个 16 字节
- 你可以去
data
这里,因为它是缓冲区第一个字节的地址,本质上与&data[0]相同
- 跳过下一个不需要的字节
- 这将获取并传递地址
data[256-16+1]
作为要读入的缓冲区。清楚的data[17]
只会从那里获取一个值,而&
运算符获取其地址。我放256-16
因为这是在上一次调用中读取的字节数,我们希望从下一个可用空间开始读取。编号从0
就是这个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)