IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

concaténation des chaines


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 61
    Points : 36
    Points
    36
    Par défaut concaténation des chaines
    bonjour,
    je suis face à une problème de concaténation en c++, je veux construire le nom d'une image a partir de son numéro, exemple
    i=21
    nom="bloc21.jpg"
    la variable nom doit etre de type char* ; un parametre de la fonction writeJpegFile(50, nom, tile_tab).
    j'ai testé ce code mais ça ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    stringstream myString;
                           myString << "bloc" << x<<y<<".jpg";
    					   cout<<myString.str()<<endl ;
                           const char* name=myString.str().c_str() ;
    					   printf("\n nom=%s",name);
    					   test.writeJpegFile( 50, name, tile_tab);

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 131
    Points : 33 072
    Points
    33 072
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    ce code est "bon", qu'est-ce qui "ne marche pas" alors ?
    string devrait suffire, pas besoin de stringstream.
    pourquoi printf alors qu'il y a un cout la ligne au-dessus ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 61
    Points : 36
    Points
    36
    Par défaut
    le problème est dans l'affichage lorsque je met "cout" il n'affiche rien et j'avais une erreur dans la fonction writeJpegfile.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    stringstream est un flux sur une chaine "string" or tu ne definis aucune chaine string donc tu envoies des données dans une coquille vide : utilise le constructeur avec comme initialisation un "string".

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 589
    Points
    41 589
    Par défaut
    ^FAUX, le stringstream contient sa propre string sinon.

    Je pense que le problème est que la string retournée par str() un temporaire, et je ne suis pas sûr qu'il soit toujours valide dans les lignes suivantes.

    Si c'est bien ça le problème, mémoriser la string devrait le corriger:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ostringstream oss;
    oss << "bloc" << x<<y<<".jpg";
    string myString = oss.str();
    cout<<myString<<endl ;
    const char* name=myString.c_str() ;
    printf("\n nom=%s",name);
    test.writeJpegFile( 50, name, tile_tab);

    Ou si tu veux faire court, ceci peut peut-être même marcher (mais c'est pas sûr, à cause des règles sur les temporaires non-nommés etc.):
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string myString = (ostringstream() << "bloc" << x<<y<<".jpg").str();
    cout<<myString<<endl ;
    const char* name=myString.c_str() ;
    printf("\n nom=%s",name);
    test.writeJpegFile( 50, name, tile_tab);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/09/2019, 13h45
  2. Réponses: 1
    Dernier message: 30/01/2013, 21h15
  3. [A-03] concaténer des chaines de 2 enregistrements
    Par ouzzin dans le forum VBA Access
    Réponses: 6
    Dernier message: 22/12/2008, 14h21
  4. concaténer des chaines sous un shell
    Par illegalsene dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 09/02/2008, 15h18
  5. Réponses: 1
    Dernier message: 10/01/2008, 11h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo