Aide pour code tableau débutant c++ svp

Signaler
Messages postés
356
Date d'inscription
mardi 12 mars 2013
Statut
Membre
Dernière intervention
21 octobre 2019
-
Messages postés
3813
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
12 juin 2020
-
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

Messages postés
3813
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
12 juin 2020
109
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
Messages postés
317
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
7 août 2020
2
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";
}


--
Messages postés
356
Date d'inscription
mardi 12 mars 2013
Statut
Membre
Dernière intervention
21 octobre 2019

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
Messages postés
317
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
7 août 2020
2
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.

--
Messages postés
356
Date d'inscription
mardi 12 mars 2013
Statut
Membre
Dernière intervention
21 octobre 2019

c'est quoi le role du tableau de 8 char dans l'execution?
un printf c'est comme un cout ?
Messages postés
317
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
7 août 2020
2
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 )

--