二进制文件 读进vector

可以参照知乎链接:https://www.zhihu.com/question/52359180


我的实现:

#include
#include 
using namespace std; 
int main()  
{  
    MatrixXd Final;
    std::vector<unsigned char> buffer;

    long size;
    ifstream in;

    in.open(filename, ios::in|ios::binary|ios::ate); 
    if(!in){  
        cout<<"open error!"<return -1;  
    }  

    size = in.tellg();  
    size = size -4;//我需要跳过4个字节,个人需要。

    buffer.resize(size);
    in.seekg (4, ios::beg);  //jump to begin pos + 偏移量
    in.read (reinterpret_cast<char*>(&buffer[0]),buffer.size()); //注意,我采用的是&buffer[0],知乎上有人采用buffer.data(),这是c++ 11才有的特性
    in.close();

    for(int i=0;i<10;i++)
    {
        cout<< (unsigned short)buffer[i]<"pause");  
    return 0;  
}  

总结:
in.read (reinterpret_cast(&buffer[0]),buffer.size())
我采用的是&buffer[0],知乎上有人采用buffer.data(),这是c++ 11才有的特性,参见http://www.cplusplus.com/reference/vector/vector/

你可能感兴趣的:(c++)