主页 > IT业界  > 

C++中读取与保存不同维度的csv数据

C++中读取与保存不同维度的csv数据

C++中读取与保存不同维度的csv数据 一、保存csv数据1.1 一维vector1.2 二维vector1.3 三维vector1.4 五维vector 二、读取csv数据2.1 一维vector2.2 二维vector2.3 三维vector2.4 五维vector

一、保存csv数据 1.1 一维vector #include <iostream> #include <fstream> #include <direct.h> #include <io.h> using namespace std; void Save_bias(vector<double> &bias, string names) { string folderPath = "..//parameter_bias//" + names; if (0 != _access(folderPath.c_str(), 0)) { _mkdir(folderPath.c_str()); } ofstream pxData; pxData.open(folderPath + "//0.csv", std::ios::out | std::ios::trunc); for (int i = 0; i < bias.size(); i++) { if (i == bias.size() - 1) { pxData << bias[i] << std::endl; } else { pxData << bias[i] << ","; } } pxData.close(); } 1.2 二维vector #include <iostream> #include <fstream> #include <direct.h> #include <io.h> using namespace std; void Save_means(vector<vector<double>> &means, string names) { string folderPath = "..//parameter_mpvs//" + names; if (0 != _access(folderPath.c_str(), 0)) { _mkdir(folderPath.c_str()); } ofstream pxData; pxData.open(folderPath + "//0.csv", std::ios::out | std::ios::trunc); for (int i = 0; i < means.size(); i++) { for (int j = 0; j < means[i].size(); j++) { if (j == means[i].size() - 1) { pxData << means[i][j] << std::endl; } else { pxData << means[i][j] << ","; } } } pxData.close(); } 1.3 三维vector #include <iostream> #include <fstream> #include <direct.h> #include <io.h> using namespace std; void Save_weight(vector<vector<vector<double>>> &weight, string names) { string folderPath = "..//parameter_weight//" + names; if (0 != _access(folderPath.c_str(), 0)) { _mkdir(folderPath.c_str()); } for (int j = 0; j < weight.size(); j++) { ofstream pxData; if (j < 10) { pxData.open(folderPath + "//0" + to_string(j) + ".csv", std::ios::out | std::ios::trunc); } else { pxData.open(folderPath + "//" + to_string(j) + ".csv", std::ios::out | std::ios::trunc); } for (int p = 0; p < weight[j].size(); p++) { for (int q = 0; q < weight[j][p].size(); q++) { if (q == weight[j][p].size() - 1) { pxData << weight[j][p][q] << std::endl; } else { pxData << weight[j][p][q] << ","; } } } pxData.close(); } } 1.4 五维vector #include <iostream> #include <fstream> #include <direct.h> #include <io.h> using namespace std; void Save_weight(vector<vector<vector<vector<vector<double>>>>> weight, string names) { string init_file = "..//parameter_weight"; if (0 != _access(init_file.c_str(), 0)) { _mkdir(init_file.c_str()); } string folderPath = init_file + "//" + names; if (0 != _access(folderPath.c_str(), 0)) { _mkdir(folderPath.c_str()); } for (int i = 0; i < weight.size(); i++) { string folderPaths = folderPath + "//" + to_string(i); if (0 != _access(folderPaths.c_str(), 0)) { _mkdir(folderPaths.c_str()); } for (int j = 0; j < weight[i].size()*weight[i][0].size(); j++) { ofstream pxData; if (j < 10 && weight[i].size()*weight[i][0].size() > 9) { pxData.open(folderPaths + "//0" + to_string(j) + ".csv", std::ios::out | std::ios::trunc); } else { pxData.open(folderPaths + "//" + to_string(j) + ".csv", std::ios::out | std::ios::trunc); } for (int p = 0; p < weight[i][j / weight[i].size()][j % weight[i][0].size()].size(); p++) { for (int q = 0; q < weight[i][j / weight[i].size()][j % weight[i][0].size()][p].size(); q++) { if (q == weight[i][j / weight[i].size()][j % weight[i][0].size()][p].size() - 1) { pxData << weight[i][j / weight[i].size()][j % weight[i][0].size()][p][q] << std::endl; } else { pxData << weight[i][j / weight[i].size()][j % weight[i][0].size()][p][q] << ","; } } } pxData.close(); } } } 二、读取csv数据 2.1 一维vector #include <iostream> #include <fstream> using namespace std; void Read_bias(vector<double> &bias, string names) { string folderPath = "..//parameter_bias//" + names; ifstream infile(folderPath + "//0.csv", ifstream::_Nocreate); string line, number; while (std::getline(infile, line)) { istringstream is(line); vector<double> lineArray; while (std::getline(is, number, ',')) { lineArray.push_back(atof(number.c_str())); } bias = lineArray; } } 2.2 二维vector #include <iostream> #include <fstream> using namespace std; void Read_means(vector<vector<double>> &means, string names) { string folderPath = "..//parameter_means//" + names; ifstream infile(folderPath + "//0.csv", ifstream::_Nocreate); string line, number; while (std::getline(infile, line)) { istringstream is(line); vector<double> lineArray; while (std::getline(is, number, ',')) { lineArray.push_back(atof(number.c_str())); } means.push_back(lineArray); } } 2.3 三维vector #include <iostream> #include <fstream> using namespace std; void Read_weight(vector<vector<vector<double>>> &weight, string names) { string folderPath = "..//parameter_weight//" + names; string dir; for (int j = 0; j < weight.size(); j++) { ofstream pxData; if (j < 10) { dir = folderPath + "//0" + to_string(j) + ".csv"; } else { dir = folderPath + "//" + to_string(j) + ".csv"; } ifstream infile(dir, ifstream::_Nocreate); string line, number; vector<vector<double>> x; while (std::getline(infile, line)) { istringstream is(line); vector<double> lineArray; while (std::getline(is, number, ',')) { lineArray.push_back(atof(number.c_str())); } x.push_back(lineArray); } weight[j] = x; } } 2.4 五维vector #include <iostream> #include <fstream> using namespace std; void Read_weight(vector<vector<vector<vector<vector<double>>>>> &_weight, string names) { string dir_path = "..//parameter_weight"; for (int i = 0; i < _weight.size(); i++) { for (int j = 0; j < _weight[i].size()*_weight[i][0].size(); j++) { string dir; if (j < 10 && _weight[i].size()*_weight[i][0].size() > 9) { dir = dir_path + "//" + names + "//" + to_string(i) + "//0" + to_string(j) + ".csv"; } else { dir = dir_path + "//" + names + "//" + to_string(i) + "//" + to_string(j) + ".csv"; } ifstream infile(dir, ifstream::_Nocreate); string line, number; vector<vector<double>> x; while (std::getline(infile, line)) { istringstream is(line); vector<double> lineArray; while (std::getline(is, number, ',')) { lineArray.push_back(atof(number.c_str())); } x.push_back(lineArray); } _weight[i][j / _weight[i].size()][j % _weight[i][0].size()] = x; } } }
标签:

C++中读取与保存不同维度的csv数据由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C++中读取与保存不同维度的csv数据