当前位置: 首页>>代码示例>>C++>>正文


C++ DirectoryEntry::setName方法代码示例

本文整理汇总了C++中DirectoryEntry::setName方法的典型用法代码示例。如果您正苦于以下问题:C++ DirectoryEntry::setName方法的具体用法?C++ DirectoryEntry::setName怎么用?C++ DirectoryEntry::setName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DirectoryEntry的用法示例。


在下文中一共展示了DirectoryEntry::setName方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: if

template <class T> void DAT::AddInDirectory(std::vector<TriageFile> Triage,const unsigned int profondeur,FILE* DatFile,const char* name,T me) //ajouter dans un nouveau dossier
{
	for (unsigned int i=0;i< profondeur;++i)
		cout<<'\t';
	cout<<"Ajout du répertoir :"<<name<<endl;
    /// Triage est un vecteur contenant les chemin des fichier à inclure qui sont obligatoirement dans le repertoire qui les traite
    fseek(DatFile,0,SEEK_END);
    const long int SeekCurrentDir=ftell(DatFile);//on enregistre la position du curseur dans le fichier où est mise la structure du dossier
    fwrite((char*)&me,1,sizeof(T),DatFile);//on met le dossier courant dans le fichier

    CurrentOffset=ftell(DatFile); //adresse acctuelle dans la mémoire

    unsigned int _size=Triage.size();

    vector<unsigned int> index;
    bool sous_dossier=false;


    for(unsigned int i=0;i<_size && !sous_dossier;++i) //pour tous les fichiers on cherche ceux à ajouter
        if(Triage[i].Path.size()==profondeur)//si c'est un fichier à ajouter
        {
            if (me.Nb<NOMBRE_OF_FILE)
            {
                me.Nb++;
                index.push_back(i);
            }
            else
                sous_dossier=true;
        }

    ///on a donc tous les fichiers à ajouter, et si nesésaire, dans un dossier de suite
    _size=0;    //difference dans index

    for (unsigned int i=0;i<me.Nb;++i) //pour tous les fichier à ajouter
    {
        //on va chercher le fichier
        int id=index[i]-_size;

        if(EcrireFichier(DatFile,&me,i,id,&Triage)) //on ecrit le fichier
            ++_size;
        else
            exit(0);
    }

    ResetMe(DatFile,&me,SeekCurrentDir); //on reecrit les info sur le dossier

    if (sous_dossier)//si sous_dossier, envoyer le vecteur.
        DeleguerDossier(Triage,profondeur,DatFile,name,&me,SeekCurrentDir);

    else if (Triage.size()>0)//on à écrit tous les fichiers, on passe aux sous dossiers  //sinon découper le vecteur par sousdossier et appeler la fonction pour chaqu'un des dossiers
    {
     //si il y à des fichiers/dossier à mettre
        string name_next=Triage[0].Path[profondeur]; //nom du prochain
        vector<TriageFile> Triage_next; //fichier du prochain
        sous_dossier=(me.Nb>=NOMBRE_OF_FILE);

        int meNb=me.Nb;

        while(Triage.size()>0 && !sous_dossier) //tant qu'on a pas distribué tous les fichiers/dossiers
        {
            bool ok=true;
            for(unsigned int i=0;i<Triage.size() && ok;++i)
            {
                if(Triage[i].Path[profondeur]==name_next) //on prend tous les fichier qui seront dans le prochain dossier
                {
                    Triage_next.push_back(Triage[i]);
                    Triage.erase(Triage.begin()+i);
                    --i;
                }
                else
                    ok=false;
            }

            fseek(DatFile,0,SEEK_END);
            CurrentOffset=ftell(DatFile);

            me.FilesEntry[meNb]=CurrentOffset;
            sous_dossier=((++meNb)>=NOMBRE_OF_FILE);

            DirectoryEntry NextDir;//prochain repertoir
            NextDir.setName((char*)name_next.c_str());
            AddInDirectory(Triage_next,profondeur+1,DatFile,name_next.c_str(),NextDir);
            Triage_next.clear();

            if (Triage.size()>0)
                name_next=Triage[0].Path[profondeur];
        }
        me.Nb=meNb;
        ResetMe(DatFile,&me,SeekCurrentDir); //on reecrit les info sur le dossier

        if (sous_dossier)
            DeleguerDossier(Triage,profondeur,DatFile,name,&me,SeekCurrentDir);
    }
    fseek(DatFile,0,SEEK_END);

};
开发者ID:Krozark,项目名称:DAT-files,代码行数:96,代码来源:DAT.cpp


注:本文中的DirectoryEntry::setName方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。