Aide pour code tableau débutant c++ svp

Messages postés
359
Date d'inscription
mardi 12 mars 2013
Statut
Membre
Dernière intervention
21 octobre 2019
- - Dernière réponse : cptpingu
Messages postés
3801
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 novembre 2019
- 7 oct. 2014 à 18:57
Bonsoir, j'aimerais créer un petit programme qui crée beaucoup de fichiers, mais pour ne pas retaper l'adresse sur le disque à chaque fichier, j'aimerais utiliser un tableau. Ils se trouvent tous dans le même dossier, sauf que le premier s'appelle 1.txt, le seconde 2.txt etc.
Ils devront tous se trouver à C://dossier/1.txt, C://dossier/2.txt etc.
J'aurais aimé une fonction qui change juste le chiffre du fichier, avec une boucle, mais c'est introuvable!
J'ai pensé à ça :


string tableau[100];
for (int i=0; i<100; i++)
{
tableau[i]="C://dossier" << i <<".txt"<< endl;
}
une idée ?
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
3801
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 novembre 2019
90
1
Merci
Bonjour.

Si tu as une boucle, tu n'as pas vraiment besoin de le stocker dans un tableau.
En C++, plutôt que sprintf, on préfère l'utilisation de stream, qui ne nécessite pas de connaître la taille finale.

Exemple:
#include <sstream>
#include <iostream>

int main()
{
  for (int i = 0; i < 100; ++i)
  {
    std::ostringstream buff;
    buff << "C://dossier" << i << ".txt";
    const std::string path = buff.str();
    std::cout << path << std::endl;
  }

  return 0;
}


Si tu veux vraiment un tableau (mais pas très utile):
#include <sstream>
#include <iostream>
#include <vector>

int main()
{
  std::vector<std::string> > tab;

  for (int i = 0; i < 100; ++i)
  {
    std::ostringstream buff;
    buff << "C://dossier" << i << ".txt";
    const std::string path = buff.str();
    tab.push_back(path);
  }

  for (int i = 0; i < tab.size(); ++i)
    std::cout << tab[i] << std::endl;

  return 0;
}



__________________________________________________________________________________________________

Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 223 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cptpingu
Messages postés
310
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
6 juillet 2019
1
0
Merci
Essayez ceci :
std::string tableau[100];
for (int i=0; i<100; i++)
{
char nb[8];
sprintf(nb,"%d", i);
tableau[i]="C://dossier" + std::string(nb) + ".txt";
}


--
Commenter la réponse de pgl10
Messages postés
359
Date d'inscription
mardi 12 mars 2013
Statut
Membre
Dernière intervention
21 octobre 2019
0
Merci
Merci, ca fonctionne bien pour créer un tableau de string avec le chemi de fichier qui change à chaque fois :)
pourriez vous m'expliquer la ligne char et sprintf? Je n'ai pas trop compris ces lignes
Commenter la réponse de Joey16
Messages postés
310
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
6 juillet 2019
1
0
Merci
La ligne char demande la création d'un tableau de 8 char ( prévus pour stocker au plus 8 caractères de nb[0] à nb[7] )
La ligne sprintf exécute la même chose qu'un printf mais range le résultat dans le tableau nb au lieu de l'afficher sur la console.

--
Commenter la réponse de pgl10
Messages postés
359
Date d'inscription
mardi 12 mars 2013
Statut
Membre
Dernière intervention
21 octobre 2019
0
Merci
c'est quoi le role du tableau de 8 char dans l'execution?
un printf c'est comme un cout ?
Commenter la réponse de Joey16
Messages postés
310
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
6 juillet 2019
1
0
Merci
Le tableau nb[] de 8 char au plus reçoit le ou les caractères pour écrire le nombre i et les transmet à tableau[i]
printf() est bien une fonction d'affichage comme std::cout << ... ( faire Google avec : C++ printf )

--
Commenter la réponse de pgl10