1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| int main ()
{
std::string chemin="/devl/truc/koi/X(n fois)/AAAAMMJJHHMMSS";
std::vector<std::string> tab;
size_t found;
do
{
/* recherche le premier "/" de la chaine */
found= chemin.find("/");
/* si le caractère est trouvé et que ce n'est pas le premier de la
* chaine, c'est que nous avons affaire à un sous dossier
*/
if(found!=0 && found!=std::string::npos)
{
/* nous prenons le premier nom trouvé */
std::string temp=chemin.substr(0,found);
/* nous l'insérons dans le tableau */
tab.push_back(temp);
/* et nous supprimons la sous-chaine correspondante
* (y compris le "/" qui suit
*/
chemin=chemin.substr(found+1);
}
/* le caractère n'est pas trouvé, c'est que nous avons affaire au fichier
*/
else if(found==std::string::npos)
{
//gère la dernière chaine de caractère
tab.push_back(chemin);
}
/* si le caractère est trouvé en première position (index 0), c'est
* que nous avons affaire au chemin absolu, et que nous devons gérer "/"
*/
else if(found == 0)
{
chemin=chemin.substr(1);
}
}while(found!=std::string::npos);
/* il ne reste "plus qu'à" afficher les différents dossier */
for(size_t i = 0;i<tab.size();++i)
std::cout<<tab[i]<<std::endl;
return 0;
} |
Partager