[C++] sprintf en C++

Résolu
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 - 2 août 2006 à 11:11
lpi_info Messages postés 8 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 27 juin 2010 - 6 mai 2009 à 16:24
Bonjour,


j'ai une question un peu stupide, mais quelle est la traduction en C++ de sprintf.


Je m'explique avec ce petit exemple qui ne fait pas grand chose en fait mais qui explique + ou - ce que je voudrai:

int i = 1;

while (...)

{

   sprintf(name,"image%03d.jpg",i);

   cout << name << endl;

   i++;

}



en sortie j'obtiens ainsi :



image001.jpg



image002.jpg



...



image010.jpg



image011.jpg



...



Bien que je puisse utiliser sprintf, je préfère l'éviter.


J'utilise pour ce faire des stringstream mais je ne sais pas comment traduire le %03d si quelqu'un pouvait m'éclairer.



D'avance merci !

TuRn3r
A voir également:

5 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
2 août 2006 à 12:01
 cout.width(3); // si tu fais comme ca, ca marche pas



 cout.fill('0'); 

 for(i=0; i < 15; i++)


    {


        cout << "Image";





        cout << i;


        cout << ".jpg" << endl;


    } 


   for(i=0; i < 15; i++)

    {

        cout << "Image";
        cout.width(3); // faut le mettre juste avant le champ que tu veux modifier sinon ca marche pas

        cout.fill('0');

        cout << i;

        cout << ".jpg" << endl;

    }


Ici c'est avec cout, mais avec les stringstream ca doit marcher aussi

++
3
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
2 août 2006 à 11:26
Avec ton stringstream tu doit pouvoir utiliser les fonctions width et fill

version :

int entier = 10;

stringstream s;

s.width(3); // laisse 3 caracteres pour l'affichage des  entiers

s.fill('0'); // si l'entier a moins de 3 chiffres on complete avec des 0

s << entier;


++
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
2 août 2006 à 11:36
Ah tiens, je connaissais pas ca, mais c'est pas encore exactement ca que je veux

Dans cette exemple, comment ecris-tu le %03d de sprintf en C+

+


Parceque la ca ne me sors que





image1.jpg

image2.jpg

...

image10.jpg

image11.jpg


stringstream name;

int i = 1;
while (...)
{
  
name << "image" << i << ".jpg"
;
   cout << name << endl;
   i++;
}


Merci pour ton aide !

TuRn3r
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
2 août 2006 à 12:08
Merci, ca marche impek !

TuRn3r
0

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

Posez votre question
lpi_info Messages postés 8 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 27 juin 2010
6 mai 2009 à 16:24
 Bonjour ,franchement moi aussi bloqué dans une situation pareille,c'est que je sais pas comment je peux traduire ces fonction sous C++,voila un morceau de mon code sous C:
    int i;
    char * toto;
    FILE * fich;

    nomFic = new char[30];

    sprintf (toto, "%dinv_modele.txt", nbSymbol);

    fichier = fopen (toto,"a+");
    if (fichier != NULL)
    {
        fprintf(fichier,"%d %d ", numSymbol, numSymbol);

        for (i=0; i<nb_iter_teta; i++)
        {       
            fprintf(fichier,"%d ",R_sign[i]);
        }

        fprintf(fichier,"\n");

        fclose(fichier);
    }
    else
        printf("Pb d'ouverture de fichier\n");
}

si qlq 1 peut m aidé svp. merci d avance
0
Rejoignez-nous