目前,我使用 ifstream 读取 C++ 中的数组,通过对值进行循环来读取和 reinterpret_cast。是否可以一次从二进制文件中加载一个无符号整数数组而不进行循环?
非常感谢你
目前,我使用 ifstream 读取 C++ 中的数组,通过对值进行循环来读取和 reinterpret_cast。是否可以一次从二进制文件中加载一个无符号整数数组而不进行循环?
非常感谢你
是的,只需传递数组第一个元素的地址,以及数组的大小(以字节为单位):
// Allocate, for example, 47 ints
std::vector<int> numbers(47);
// Read in as many ints as 'numbers' has room for.
inFile.read(&numbers[0], numbers.size()*sizeof(numbers[0]));
注意:我几乎从不使用原始数组。如果我需要一个看起来像数组的序列,我使用std::vector
. 如果必须使用数组,则语法非常相似。
读写二进制图像的能力是不可移植的。您可能无法在另一台机器上重新读取数据,甚至无法在具有不同编译器的同一台机器上重新读取数据。但是,使用您现在使用的解决方案,您已经遇到了这个问题。