istream to vector with struct conversion

时间:2012-08-16 12:58:11

标签: c++ vector struct ifstream readfile

我的文件包含:

typedef struct {
    float fX; ///< position X
    float fY; ///< position Y
    int iSize; ///< Size of point   
} structParams;

但是我想把它读到几乎相同结构的矢量但没有iSize

typedef struct {
    float fX; ///< position X eq. structParams.fX
    float fY; ///< position Y eq. structParams.fY
} structPositionParams;

我能否以与

类似的方式做到这一点
ifstream inStr("file.dat");
vector<structPositionParams>  oVector;
oVector.(numOfElements);
inStr.read((char*)&oVector[0], sizeof(structPositionParams) * numOfElements);
inStr.close();

1 个答案:

答案 0 :(得分:0)

您必须使用数据的 stride 。由于标准库不支持以任何方式读取跨步数据,因此要么读取整个文件,然后运行for循环从该数据创建对象,要么在for循环中进行整个读取,之后跳过sizeof(int)每个对象。