I want to create a function in c++ to read a file having the file as an argument, but I have problems when I compile the program
这是读取文件的函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | void read_function(istream& filename, vector< vector<double> >& v) { //vector<vector<double> > v; if (filename) { string linea; int i = 0; while (getline(filename, linea)) { v.push_back(vector<double>()); stringstream split(linea); double value; while (split >> value) { v.back().push_back(value); } } } }; |
主要功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | int main(int argc, char const *argv[]){ if (argc < 2) { cerr <<"input file's name "<< endl; } string program_name = argv[0]; ifstream input; input.open(argv[1]); vector< vector<double> > array; for (int i = 0; i < array.size(); i++) { for (int j = 0; j < array[i].size(); j++) cout << read_function(argv[1], array) << '\t'; cout << endl; } return 0; } |
当我编译代码时,会收到以下错误消息
错误:类型"const char*"的表达式中类型"std::istream&;aka std::basic"的引用初始化无效cout< 错误:传递"void read"函数(std::istream&;,std::vector>&;)的参数1时出错。void read_函数(istream&filename,vector
型
请不要采用错误的方式,但是对于您的编程技能水平来说,您在代码中所犯的错误看起来可能是一项非常困难的任务。
你犯了几个错误:
百万千克1
你在
百万千克1百万千克1
您在
百万千克1百万千克1
百万千克1百万千克1
百万千克1百万千克1
百万千克1
我建议在尝试使用更复杂的东西(如
我纠正了你的错误,下面的代码只读取你输入文件中的数字,没有字符。我认为这是你的目标,因为你使用了一个
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #include<fstream> #include<iostream> #include<vector> #include<sstream> using namespace std; void read_function(char* filename, vector< vector<double> >& v) { int maxNumberOfCharsPerLine=1000; ifstream input; input.open(filename); if(input.is_open()) { char* inputChar; string linea; while (input.getline(inputChar, maxNumberOfCharsPerLine)) { linea=inputChar; v.push_back(vector<double>()); stringstream split(linea); double value; while (split >> value) { v.back().push_back(value); } } } input.close(); } int main(int argc, char const *argv[]){ if (argc < 2) { cerr <<"no input file's name "<< endl; } vector< vector<double> > array; read_function((char*)argv[1], array); for (int i = 0; i < array.size(); i++) { for (int j = 0; j < array[i].size(); j++) { cout << array[i][j] <<""; } cout << endl; } return 0; } |