2012-08-16 70 views
0

我有文件與向量:的IStream到矢量與結構轉換

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

你有沒有試過? – Andrew 2012-08-16 12:58:57

回答

0

你必須利用步幅個數據。由於標準庫不支持以任何方式讀取跨步數據,要麼讀取整個文件,然後從該數據運行for循環創建對象,要麼在for循環中執行整個讀取操作,在每個對象後跳過sizeof(int)