我想读一个16位字的二进制文件。现在,我正在使用一个std::ifstream来读取一个2个字符数组的c。
#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中是否有更好的(或者更安全或者更快)的方法来做到这一点?
发布于 2018-05-07 16:01:36
在C++11中没有读取文件的新API。
如果文件适合您的RAM,最理想的方法是将其映射到内存中,并以字节数组的形式访问它。但是,C++标准库没有为此提供API。不过,您可以通过Boost实现这一点,请参见Boost.Interprocess内存映射文件。
不过,通常的建议是:从简单和正确工作的代码开始,对文件进行基准测试,看看文件读取是否是瓶颈。
https://stackoverflow.com/questions/50217383
复制相似问题