1. 程式人生 > >ORBSLAM2--載入資料集

ORBSLAM2--載入資料集

ifstream是操作檔案的輸入流類。
建立一個讀取檔案的fAssociation物件。
ifstream::open的宣告為:

void open (const char* filename,  ios_base::openmode mode = ios_base::in);

需要一個char *型的指標,strAssociationFilename.c_str()的作用是轉換為一個和C語言類似的字串型別。
如果檔案為空,則fAssociation.eof()返回為true,迴圈結束。

getline(fAssociation,s);的作用是從fAssociation檔案流中獲取一行資料賦值給string類的物件s。

接著按照順序依次對時間t,RGB圖sRGB,Depth圖sD賦值。
同時將其push入對應的容器中。

void LoadImages(const string &strAssociationFilename, vector<string> &vstrImageFilenamesRGB,
                vector<string> &vstrImageFilenamesD, vector<double> &vTimestamps)
{
    ifstream fAssociation;
    fAssociation.open(strAssociationFilename.c_str());
    while(!fAssociation.eof())
    {
        string s;
        getline(fAssociation,s);
        if(!s.empty())
        {
            stringstream ss;
            ss << s;
            double t;
            string sRGB, sD;
            ss >> t;
            vTimestamps.push_back(t);
            ss >> sRGB;
            vstrImageFilenamesRGB.push_back(sRGB);
            ss >> t;
            ss >> sD;
            vstrImageFilenamesD.push_back(sD);

        }
    }
}