當前位置: 首頁>>代碼示例>>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;未經允許,請勿轉載。