c++:根据空格将string拆分成多个string

    xiaoxiao2021-12-03  20

    /*************************************************************************    LoadData:加载数据,(一般都是在训练时会用到)    输入:    const string &strFile:文件名(带路径的)    输出:    vector<string> &_vsImageFilenames:图片名称(带路径,保证能找到哦)    vector< vector<Rect> > &_vvRect:矩形区域大小    备注:(文件中一行的格式)   文件名称          矩形区域个数     x      y       width    height    x      y       width    height

      data/1.bmp              2                 10   20        100      120     50   60        100      120

       **************************************************************************/

    void CommonFun::LoadData(const string &strFile, vector<string> &_vsImageFilenames, vector< vector<Rect> > &_vvRect)

    {     ifstream f;     f.open(strFile.c_str());         string s, str;     int nIndex = 0;     Rect r;     int nIndexRect = 0;     while(!f.eof())     {              getline(f,s);                if(!s.empty())         {               //printf("s=%s\n", s.c_str());             stringstream ss(str);             ss << s;             vector<Rect> vRect;             nIndex = 0;             nIndexRect = 0;             while(getline(ss, str, ' '))             {                 //printf("str=%s\n", str.c_str());                 if (0 == nIndex)                 {                    _vsImageFilenames.push_back(str);                 }                 else if (1 == nIndex)                 {                    //检测框的个数                 }                 else if (2 == nIndex%4)                 {                    r.x = atoi(str.c_str());                    nIndexRect++;                               }                 else if (3 == nIndex%4)                 {                    r.y = atoi(str.c_str());                    nIndexRect++;                               }                 else if (0 == nIndex%4)                 {                    r.width = atoi(str.c_str());                    nIndexRect++;                               }                 else if (1 == nIndex%4)                 {                    r.height = atoi(str.c_str());                    nIndexRect++;                       if (4 == nIndexRect)                    {                                       nIndexRect = 0;                        vRect.push_back(r);                              }                          }                 nIndex++;              } //while(getline(ss, str, ' '))              _vvRect.push_back(vRect);         }//if(!s.empty())     }//while(!f.eof())     #if 0     for (int i=0; i<_vsImageFilenames.size(); i++)       {        printf("index=%d, name=%s\n", i+1, _vsImageFilenames[i].c_str());     }     for (int i=0; i<_vvRect.size(); i++)       {         for (int j=0; j<_vvRect[i].size(); j++)           {              r = _vvRect[i][j];            printf("index=%d, rect index=%d, (%d,%d,%d,%d)\n", i+1, j+1, r.x, r.y, r.width, r.height);         }             } #endif }
    转载请注明原文地址: https://ju.6miu.com/read-680152.html

    最新回复(0)