Aide pour code tableau débutant c++ svp

Joey16 Messages postés 366 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 21 octobre 2019 - 4 oct. 2014 à 23:25
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 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 ?

6 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
7 oct. 2014 à 18:57
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
1
pgl10 Messages postés 380 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 29 octobre 2023 11
7 oct. 2014 à 11:21
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";
}


--
0
Joey16 Messages postés 366 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 21 octobre 2019
Modifié par Joey16 le 7/10/2014 à 17:16
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
0
pgl10 Messages postés 380 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 29 octobre 2023 11
7 oct. 2014 à 17:39
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.

--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Joey16 Messages postés 366 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 21 octobre 2019
7 oct. 2014 à 17:44
c'est quoi le role du tableau de 8 char dans l'execution?
un printf c'est comme un cout ?
0
pgl10 Messages postés 380 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 29 octobre 2023 11
7 oct. 2014 à 17:57
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 )

--
0
Rejoignez-nous