Проблемы с чтением и загрузкой данных из файла CSV в C ++ - PullRequest
0 голосов
/ 18 марта 2012

Я создаю нейронную сеть, в которой мне нужно прочитать данные из файла CSV и сохранить каждую строку в качестве отдельного обучающего набора для сетевых входов.Каждая строка состоит из набора шаблонов и заканчивается целевым выводом.

Мне удалось прочитать и проанализировать первую строку в соответствующих списках указателей, а затем сохранить их в векторе, создав новый объект базового класса, который принимает два указателя.

Проблема в том, что я не могу понять, как прочитать строку из файла, сохранить ее в векторе указателя объекта, а затем продолжить чтение каждой строки до конца файла, сохраняя каждуювектор.Я был бы очень признателен за любую помощь, которая могла бы быть предоставлена ​​вместе с возможными предложениями, которые могут быть более эффективными или оптимальными.

void processLine( string &line )
{

      double* pattern = new double[numPatterns];
      double* target = new double[numTargets];


      char* cstr = new char[line.size()+1];
      char* t;
      strcpy(cstr, line.c_str());

      int i = 0;
      t=strtok (cstr,",");

      while ( t!=NULL && i < (numPatterns + numTargets) )
      { 
        if ( i < numPatterns ) pattern[i] = atof(t);
        else target[i - numPatterns] = atof(t);

        //move token onwards
        t = strtok(NULL,",");
        i++;            
     }


     data.push_back( new priceEntries( pattern, target ) );     
}


bool loadDataFile(const char* file, int numP, numT)
{
        numPatterns = numP;
    numTargets = numT;

    fstream inputFile;
    inputFile.open(filename, ios::in);  


    if ( inputFile.is_open() )
    {

         string line = "";

         //read data
         while ( getline(inputFile, line) )
         {      
          processLine(line);
         }

   random_shuffle(data.begin(), data.end());

   inputFile.close()

   return true;
   }

   else
   {
        cout << "File could not be opened.\n";
   }
}

1 Ответ

0 голосов
/ 18 марта 2012

Ваша проблема, кажется, основной синтаксический анализ CSV. Если это так, я бы предложил использовать простую библиотеку синтаксического анализатора (на ум приходит libcsv) вместо попытки разбора с нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...