You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何直接使用istream::read将字节读取到unsigned long数组?

问题

我想使用istream::read将数据读取到unsigned long数组中,实现和char数组一样的效果——把文件的每个字节分别存入unsigned long数组的对应元素里。示例代码如下:

std::ifstream foo("filename.txt", std::ios::binary);
// 假设文件内容为0x00 0x01 0x02 0x03 0x04 ...
unsigned long bar[256];
foo.read((char*)(&bar), 256); // 期望bar[0] = 0x00, bar[1] = 0x01 ...
// 目标是将文件的每个字节存入bar的一个元素中。

这段代码无法正常工作,原因是unsigned long和char的存储方式不同。我知道可以先创建临时char数组再转换成unsigned long*,但希望直接使用unsigned long数组实现需求,请问该怎么做(不能创建临时char数组)?

编辑

根据@Sam Varshavchik的建议,我编写了以下代码,它可以正常运行:

ifstream file("filename.txt", ios::in | ios::binary);

unsigned long buffer[256];
for(unsigned i = 0; i < 256; ++i){
    file.read(reinterpret_cast<char*>(buffer + i), sizeof(char));
}

内容的提问来源于stack exchange,提问作者tony_merguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 08:23:07