首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++11读取二进制文件的方式是什么(一次读取16位)?

C++11读取二进制文件的方式是什么(一次读取16位)?
EN

Stack Overflow用户
提问于 2018-05-07 15:11:30
回答 1查看 327关注 0票数 0

我想读一个16位字的二进制文件。现在,我正在使用一个std::ifstream来读取一个2个字符数组的c

代码语言:javascript
复制
#include <iostream>
#include <fstream>
#include <stdint.h>

int main() {
  std::ifstream file("./tetris.rom", std::ios::in | std::ios::binary);
  char c[2];
  while (file.read(c, 2)) {
    uint16_t word = (static_cast<uint8_t>(c[0]) << 8) | static_cast<uint8_t>(c[1]);
    std::cout << "word\t" << std::hex << word << std::endl;
  }
}

这对我来说是可行的,但是在C++11中是否有更好的(或者更安全或者更快)的方法来做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-07 16:01:36

在C++11中没有读取文件的新API。

如果文件适合您的RAM,最理想的方法是将其映射到内存中,并以字节数组的形式访问它。但是,C++标准库没有为此提供API。不过,您可以通过Boost实现这一点,请参见Boost.Interprocess内存映射文件

不过,通常的建议是:从简单和正确工作的代码开始,对文件进行基准测试,看看文件读取是否是瓶颈。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50217383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档