递归保存/加载函数c++; 我创建了一个C++的虚拟文件系统,我模拟了硬盘。我现在想弄清楚的是,我将如何“保存”这个硬盘,例如一个.txt文件,然后将整个内容再次导入到程序中。考虑到您可以将无限多的文件夹和文件放在彼此的内部,这就变得复杂了:/我现在使用的递归函数无法以加载文件系统的方式打印文件系统。如果有人看一看,我会很高兴的

递归保存/加载函数c++; 我创建了一个C++的虚拟文件系统,我模拟了硬盘。我现在想弄清楚的是,我将如何“保存”这个硬盘,例如一个.txt文件,然后将整个内容再次导入到程序中。考虑到您可以将无限多的文件夹和文件放在彼此的内部,这就变得复杂了:/我现在使用的递归函数无法以加载文件系统的方式打印文件系统。如果有人看一看,我会很高兴的,c++,recursion,filesystems,C++,Recursion,Filesystems,多谢各位 这是我的文件系统的.h文件 #ifndef FOLDER_H #define FOLDER_H #include <iostream> #include <string> #include "file.h" using namespace std; class folder { private: int CAP1 = 10; int CAP2 = 10; int nrOfChildFolders; int nrOfFiles;

多谢各位

这是我的文件系统的.h文件

#ifndef FOLDER_H
#define FOLDER_H
#include <iostream>
#include <string>
#include "file.h"
using namespace std;
class folder
{
private:
    int CAP1 = 10;
    int CAP2 = 10;

    int nrOfChildFolders;
    int nrOfFiles;
    string folderName;
    folder * parentFolder;
    folder ** childFolder = new folder *[CAP1];
    file ** fileArray = new file * [CAP2];



public:
    folder();
    folder(string folderName, folder * parent);
    ~folder();
    void addFolder(string folderName);
    void addFile(string fileName, int nr);
    string getFolderAndFiles()const;
    string getFolderName()const;
    int getFileNr(string fileName)const;
    void reset();
    folder * getFolder(string name)const; 
    folder * getParentFolder()const;
    void deleteFile(string name, int nr);
    folder * getChildFolder(int pos);
    int getNrOfChildFolders()const;
    int getNrOfFiles()const;
    file * getFile(int pos);
    folder& operator=(const folder& other);
    /* data */
};
#endif
\ifndef文件夹
#定义文件夹
#包括
#包括
#包括“file.h”
使用名称空间std;
类文件夹
{
私人:
int CAP1=10;
int CAP2=10;
国际儿童基金会;
国际办公室;
字符串folderName;
文件夹*父文件夹;
文件夹**子文件夹=新文件夹*[CAP1];
文件**文件数组=新文件*[CAP2];
公众:
文件夹();
文件夹(字符串folderName,文件夹*父文件夹);
~folder();
void addFolder(字符串folderName);
void addFile(字符串文件名,整数编号);
字符串getFolderAndFiles()常量;
字符串getFolderName()常量;
int getFileNr(字符串文件名)常量;
无效重置();
文件夹*getFolder(字符串名称)常量;
文件夹*getParentFolder()常量;
void deleteFile(字符串名称,整数编号);
文件夹*getChildFolder(int pos);
int getNrOfChildFolders()常量;
int getNrOfFiles()常量;
文件*getFile(int-pos);
文件夹和运算符=(常量文件夹和其他);
/*资料*/
};
#恩迪夫
这是我的递归函数:

void FileSystem::recursiveSave(folder * newCurrentFolder, string &saveFile)
{
    ofstream file;
    file.open(saveFile, fstream::app);
    folder * child;
    for (int i = 0; i < newCurrentFolder->getNrOfChildFolders(); i++)
    {
        file << newCurrentFolder->getChildFolder(i)->getFolderName() << "\n";
        nrOfLines++;
        child = newCurrentFolder->getChildFolder(i);
        recursiveSave(child, saveFile); 
    }
    file << newCurrentFolder->getNrOfChildFolders() << "\n"; 
    nrOfLines++; 
    for (int i = 0; i < newCurrentFolder->getNrOfFiles(); i++) 
    {
        file << newCurrentFolder->getFile(i)->returnValue() << "\n";
        nrOfLines++;
        file << newCurrentFolder->getFile(i)->returnName() << "\n"; nrOfLines++; 
    }
    file << newCurrentFolder->getNrOfFiles() << "\n"; nrOfLines++; 
}
void FileSystem::recursiveSave(文件夹*newCurrentFolder,字符串和保存文件)
{
流文件;
打开(保存文件,fstream::app);
文件夹*子文件夹;
对于(int i=0;igetNrOfChildFolders();i++)
{
文件getChildFolder(i)->getFolderName()getChildFolder(i);
递归保存(子项,保存文件);
}
文件getNrOfChildFolders()getNrOfFiles();i++)
{

file getFile(i)->returnValue()returnName()调试时您发现了什么?序列化有帮助吗?请看,计算机有时有自己的计时。这是关于做优化的事情,如果处理不正确(只有专业人员应该尝试),就会出现问题。然而,序列化是一种哈希,您的计算机将正确读取。这样做是有好处的你可能希望跳过时差,而不需要进入
内存\u顺序
计算机在时间上并不与你作对,计算机就是这样。因此,如果你要进入文件系统,你肯定必须处理这些顺序机制,