C++:实际上不是从二进制文件中读取
C++: Not actually reading from binary file
我知道这种问题经常被问到,但无论我遵循什么例子,我似乎都无法得到预期的结果。我想从二进制文件中读取整数并将它们存储在向量中。我有下面的代码。
std::ifstream infile;
infile.open(fileName.c_str(), std::ios_base::binary | std::ios_base::in);
infile.seekg(0, infile.end);
long size = infile.tellg();
std::vector<int> input(size/sizeof(int), 0);
// Option 1
infile.read(reinterpret_cast<char*>(&input[0]), size);
// Option 2
infile.read((char*)&input[0], size);
infile.close();
我在阅读时尝试了这两个选项,但是当我打印矢量的内容时,所有元素都是零。
// Option 1
infile.read(reinterpret_cast<char*>(&input[0]), sizeof(int);
std::istream::read((std::istream::tellg((
您需要传递要读取的数据段的大小,而不是整个文件的大小。如注释中所述,在确定大小后,您还需要重置指向文件开头的指针。
如果您使用的是较新的C++ (C++11(,则不需要将文件名转换为 C 字符串。如果您有 C++17,可能值得学习<filesystem>
库。
如果您想读取许多整数,请将读取放在循环中。
相关文章:
- 如何在 c++ 中将二进制文件读取为字符串
- 从二进制文件读取到数组:前面的任意数字
- 提升二进制文件读取错误不支持的版本
- 无法将二进制文件读取到 std::vector<std::byte> 中C++
- 提升序列化在从二进制文件读取时引发异常
- 从二进制文件 C++ 读取的字符串数组写入
- 将二进制文件读取到 std::vector<bool>
- 将fortran生成的二进制文件读取到C++中的带符号整数数组中
- 将从二进制文件读取的字符串转换为整数
- 从/到C 的二进制文件读取和写作整数
- 通过将结构信息从二进制文件读取到数组中,然后返回到文件C
- 将 int 的二进制文件读取到字符串 c++
- 将结构从二进制文件读取到链表,导致无限循环
- 将二进制文件读取到向量元素的地址中
- c++从二进制文件读取/写入类
- Python:将二进制文件读取到一个结构中,然后拆包
- 从二进制文件读取/写入十六进制字节
- 简单的 C++ 二进制文件读取
- 从二进制文件 c++ 读取 16 位整数
- 如何优化c++二进制文件读取