C ++:读取二进制文件

时间:2011-06-23 11:51:34

标签: c++

我有一个二进制文件,其中包含多个名称,后跟一些详细信息(已修复50个字节)。每个名称后跟0X00,后跟50字节的详细信息。我只需要从文件中提取名称。即读取所有字符直到0x00,跳过50个字节并继续直到文件结尾。在C ++中执行此操作的最佳方法是什么。

2 个答案:

答案 0 :(得分:1)

#include <fstream>
#include <string>

...
std::ifstream file("filename");
if ( ! file.is_open() )
  return;

std::string name;
char data[50];

while ( std::getline( file, name, '\0' ) && file.read( data, 50 ) )
{
  // you could use name and data
}
file.close();
...

答案 1 :(得分:0)

在“学习钓鱼的人”部门:www.cplusplus.com

简单方法:

#include <fstream>
#include <iostream>   

int main()
{
    char buf[50];
    std::ifstream ifs("data.bin", std::ios_base::binary | std::ios_base::in);
    while (ifs.read(buf, sizeof(buf)))
    {
        if (!ifs.eof())
        {
            std::cout << std::string(buf) << std::endl;
        }
    }

    std::cout << "Done" << std::endl;
    ifs.close();

    return 0;
}