#include "util.h" array, 5> read_csv(const string& filename) { array, 5> array_vectors; vector vec_cmd_get; vector vec_cmd_set_true; vector vec_cmd_set_false; vector vec_option; vector vec_opcision; ifstream file(filename); string line; char delimiter = ','; getline(file, line); while (getline(file, line)) { stringstream stream(line); string cmd_get; string cmd_set_true; string cmd_set_false; string option; string opcision; getline(stream, cmd_get, delimiter); getline(stream, cmd_set_true, delimiter); getline(stream, cmd_set_false, delimiter); getline(stream, option, delimiter); string line_local = stream.str(); if (line_local.find("\"") != string::npos) { string str_delimiter = "\""; vector point = find_all(line_local, str_delimiter); size_t len = point.size(); if (len >= 2) { int index_start = point[len-2]; int index_end = point[len-1]; opcision = line_local.substr(index_start, index_end); index_end = opcision.find("\""); if (opcision.find("\"") != string::npos) { opcision.replace(index_end, opcision.length(), ""); } } else { opcision = "error"; } } else{ getline(stream, opcision, delimiter); } vec_cmd_get.push_back(cmd_get); vec_cmd_set_true.push_back(cmd_set_true); vec_cmd_set_false.push_back(cmd_set_false); vec_option.push_back(option); vec_opcision.push_back(opcision); } array_vectors[0] = vec_cmd_get; array_vectors[1] = vec_cmd_set_true; array_vectors[2] = vec_cmd_set_false; array_vectors[3] = vec_option; array_vectors[4] = vec_opcision; return array_vectors; } string call(string cmd) { FILE *fp; int status; char path[PATH_MAX] = {0}; fp = popen(cmd.c_str(), "r"); if (fp == NULL) { exit(1); } while (fgets(path, PATH_MAX, fp) != NULL) { break; } status = pclose(fp); if (status == -1) { exit(1); } return path; } vector find_all(string &str_ntp, string substr) { size_t index = 0; vector sub_index; while ((index = str_ntp.find(substr, index)) != std::string::npos) { index += substr.length(); sub_index.push_back(index); } return sub_index; }