2017-09-15 34 views
0

我有一个二进制文件,其中包含10个整数让我们说二进制。有什么方法可以使用迭代器来检查该文件吗?到目前为止,我只是从文件中处理这些数字并将它们放入数组中。但我可以避免使用数组或向量?有些事告诉我可能需要重载++和 - 。希望我的问题很清楚。使用迭代器浏览文件

+2

将其读入缓冲区。将缓冲区视为一个数组。你确定他们是在右端格式?为什么要避免使用阵列,当他们是工作的正确工具? – tadman

+0

@tadman这就是任务:( –

+0

如果这是一个编码挑战,**得到编码**。记住在C和C++数组和指针是同一枚硬币的两面。 – tadman

回答

2

使用任何std::istream读取文件,你可以使用std::istream_iterator和定义自定义operator>>使用std::istream.read()读取整数。例如:

struct binary_int 
{ 
    int32_t value; // or whatever type you need 
}; 

std::istream& operator>>(std::istream &in, binary_int &out) 
{ 
    return in.read((char*)&out.value, sizeof(out.value)); 
} 

{ 
    std::ifstream inFile(...); 

    std::istream_iterator<binary_int> iter(inFile); 
    std::istream_iterator<binary_int> end; 

    while (iter != end) 
    { 
     // use iter->value as needed... 
     ++iter; 
    } 
}