将二维数组打印成table的模板函数

来源:互联网 发布:mac抹掉磁盘重装系统 编辑:程序博客网 时间:2024/06/05 06:22
template <class Type, int Row, int Col>bool PrintTableHtml(const Type (&arr)[Row][Col], const std::string &htmlfile, const std::string &tableInfo){if(arr == NULL){return false;}//cout << Row << endl << Col << endl;ofstream fout(htmlfile.c_str());if(!fout){cerr << "PrintTableHtml: Can't open file: " << htmlfile << endl;return false;}fout << "<html>" << endl;fout << "<body>\n<table border=2>" << endl;fout << "<tr>\n<td>" << tableInfo << "</td>" << endl;for(int j = 0; j < Col; j ++){fout << "<td>" << j + 1 << "</td>";}fout << "</tr>" << endl;for(int i = 0; i < Row; i ++){fout << "<tr>\n<td>" << i + 1 << "</td>" << endl;for(int j = 0; j < Col; j ++){if(i == j){fout << "<td> - </td>";continue;}Type resTmp = arr[i][j];if(i > j){resTmp = arr[j][i];}if(strcmp(typeid(resTmp).name(), "double") == 0){//小数点后面保留3位fout << setiosflags(ios::fixed) << setprecision(3);}fout << "<td>" << resTmp << "</td>";}fout << "</tr>" << endl;}fout << "</table>\n</body>\n</html>" << endl;fout.close();return true;}

原创粉丝点击