本文整理匯總了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);
};