Как настроить параметры функции для получения 2-мерного вектора, заполненного значениями, считанными из файла? - PullRequest
0 голосов
/ 28 января 2019

Я изо всех сил пытаюсь записать параметры для функции 'readFile', параметрами которой являются - имя файла и двухмерный вектор, в который информация копируется из файла.Программа не генерирует ЛЮБЫХ ошибок, но возвращает только пустой вектор.Если я скопирую код из функции 'readFile' в функцию main (), это сработает, но я хочу создать отдельную функцию, чтобы я мог заполнять векторы информацией из разных файлов.Также мне нужно будет передать эти аргументы для функций другого типа с похожей структурой, где я читаю из файла и копирую в 2D вектор, поэтому мне действительно нужно это выяснить.Функция «PrintVector» работает нормально.Может ли кто-нибудь помочь мне?

#include <string>
#include <sstream>
#include <iostream>
#include <vector>
#include <fstream>
 using namespace std;

void printVector(vector< vector <float> > v)
{
 for (size_t i=0; i<v.size(); ++i)
    {
        for (size_t j=0; j<v[i].size(); ++j)
        {
            cout << v[i][j] << "\t";
        }
        cout << "\n";
    }
}

void readFile(char* filename, vector< vector<float> > &rowvector)
{

    ifstream myfile(filename, ios::in);
    string line;
    string field; 
    vector<float> v;                // 1 row 
    float result;                // converted string value is saved in 'result' as a float type
    if(myfile.is_open()){
    while ( getline(myfile,line) )    // get next line in file
    {
        v.clear();
        stringstream ss(line);

        while (getline(ss,field,','))  // comma seperates elements
        {
            istringstream convert(field);
            if ( !(convert >> result) )
                result = 0;
            v.push_back(result);  // add each field to the 1D array


        }

        rowvector.push_back(v);  // add the 1D array to the 2D array
    }

}
myfile.close();
}
int main()
{


   vector< vector<float> > myvector; // new 2D vector
    readFile("test.txt", myvector); 
    printVector(myvector);

return 0;
}

Любая помощь очень ценится!

...