我正在努力为函数“ 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;
}
非常感谢您的帮助!