다음 코드를 사용하여 여러 개의 .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 벡터는 가변 개수의 2D 벡터를 보유합니다. 이미 3D 벡터가 있으므로 원하는 내용을 잘 모릅니다. – interjay
오류, 완전히 잃어 버렸습니다. 게시 된 코드의 문제점은 무엇입니까? 그것은 당신이 요구하는대로 정확하게 행동하는 것 같습니다. –
@interjay 문제는 각 파일을 별도의 벡터에 저장하는 것이므로 나중에이 벡터를 별도로 사용할 수 있습니다. – Hawk