Я использовал следующий фрагмент кода для чтения из нескольких файлов .dat
и проанализировал их. Этот код использует 3D-векторы для хранения данных после процесса чтения. Однако я хотел бы, чтобы данные, соответствующие каждому отдельному файлу, были независимы от других. Проблема в том, что количество файлов меняется и неизвестно во время компиляции; следовательно, число векторов тоже меняется. Я хотел бы знать, есть ли какое-либо решение для этого.Хранение данных из неизвестного количества файлов
vector<vector<vector<string>>> masterList;
for (int i = 0; i < files.size(); ++i) {
cout << "file name: " << files[i] << endl;
fin.open(files[i].c_str());
if (!fin.is_open()) {
// error occurs!!
// break or exit according to your needs
cout<<"error"<<endl;
}
std::vector<vector<string>> tokens;
int current_line = 0;
std::string line;
while (std::getline(fin, line))
{
cout<<"line number: "<<current_line<<endl;
// Create an empty vector for this line
tokens.push_back(vector<string>());
//copy line into is
std::istringstream is(line);
std::string token;
int n = 0;
//parsing
while (getline(is, token, DELIMITER))
{
tokens[current_line].push_back(token);
cout<<"token["<<current_line<<"]["<<n<<"] = " << token <<endl;
n++;
}
cout<<"\n";
current_line++;
}
fin.clear();
fin.close();
masterList.push_back(tokens);
}
Итак, главный вопрос, я столкнулся: как создать переменное число 2D векторов для хранения данных, соответствующих каждому отдельному файлу, когда я не знаю, сколько файлов есть во время компиляции время.
3D-вектор содержит переменное число двумерных векторов. Поскольку у вас уже есть 3D-вектор, я не уверен, что вы спрашиваете. – interjay
Err, я полностью потерял вас, ЧТО это проблема с опубликованным кодом? Кажется, это точно то, что вы описываете по мере необходимости. –
@interjay Проблема состоит в том, чтобы хранить каждый файл в отдельный вектор, поэтому я могу использовать эти векторы по отдельности позже. – Hawk