如何设置函数参数以取回填充有从文件读取的值的二维向量?

时间:2019-01-28 15:43:41

标签: c++ function parameters parameter-passing

我正在努力为函数“ readFile”编写参数,这些参数是-文件名和从文件中复制信息的2D向量。该程序不会引发任何错误,但确实会返回一个空向量。如果我将代码从“ 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;
}

非常感谢您的帮助!

0 个答案:

没有答案