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 :

Afficher les parametres d'une fonction


Sujet :

C++

  1. #1
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Par défaut Afficher les parametres d'une fonction
    Bonjour,

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    string fonct::param(const std::string& pat, const std::int& value)
    {
    CString	msg;
    msg = CString("parametres: ") + "\n" + pat + "\n" + value;
    return msg;
    }
    je voudrais que le resultat suivant :

    parametres:
    ce qui a dans pat
    ce qui a dans value
    merci d'avance

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Pourquoi CString ? Qu'est-ce qui ne vas pas avec std::string ? CString et std::string sont deux types différents. Utilise l'un ou l'autre. Pour l'affichage, c'est cout je crois ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::cout << "Le texte a afficher" << std::endl;

  3. #3
    jmv
    jmv est déconnecté
    Membre chevronné Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par défaut
    Citation Envoyé par Melem Voir le message
    Pourquoi CString ? Qu'est-ce qui ne vas pas avec std::string ? CString et std::string sont deux types différents. Utilise l'un ou l'autre.
    +1

    Sinon pour résoudre ton problème, tu peux utiliser std::ostringstream .

  4. #4
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Par défaut
    OK

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    string fonct::param(const std::string& pat, const std::int& value)
    {
    CString	msg;
    msg = "parametres: " + "\n" + pat + "\n" + value;
    return msg;
    }
    mais il y a une erreur sur la ligne : msg = "pa....
    error C2679: binary '+' : no operator defined which takes a right-hand operand of type 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there
    is no acceptable conversion)
    qu'est ce qui ne va pas dans cette ligne, sachant que pat et value sont des paramtres de ma fonction?
    msg = "parametres: " + "\n" + pat + "\n" + value;

    merci

  5. #5
    jmv
    jmv est déconnecté
    Membre chevronné Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par défaut
    Utilise std::ostringstream

  6. #6
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Par défaut
    Je viens de reprendre le code et je ne veux pas tout faire peter lol

    je voudrais juste mettre pat et value dans msg, il doit y avoir un truc simple a faire sans changer le type des parametre.
    De plus je suis debutant en c++ alors. des solutions easy?

    merci

  7. #7
    jmv
    jmv est déconnecté
    Membre chevronné Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par défaut
    Je ne connais pas le type CString mais ça doit être le + entre une chaine et un entier qui coince.

    std::ostringstream est un flux dans une chaine de caractere (std::string), ça s'utilise en gros comme cout.
    Pour récupérer la chaine, il y a la methode str()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <string>
    #include <sstream>
    using namespace std;
     
    string fonct::param(const string& pat, int value)
    {
        ostringstream oss;
        oss << "parametres: \n" << pat << "\n" << value;
        return oss.str();
    }
    [edit]je n'ai pas testé le code, je te laisse le soin de le faire[/edit]

    Et si tu as peur de tout casser, n'efface pas l'ancien code, met le en commentaire, tu pourras toujours revenir en arrière.

  8. #8
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Par défaut
    merci je testerais cette aprem

    et si je veux faire une bouche et ecrire dans oss
    est ce qu'il y a un truc comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(i..)
    {
    oss = oss + "i "
    }

  9. #9
    jmv
    jmv est déconnecté
    Membre chevronné Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par défaut
    Citation Envoyé par cortex59 Voir le message
    et si je veux faire une bouche et ecrire dans oss
    est ce qu'il y a un truc comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(i..)
    {
    oss = oss + "i "
    }
    Non, mais tout simplement oss << "i ".

    Par contre avec la classe std::string tu peux ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string s;
    s = s + "i ";
    Mais il n'existe pas d'operateur + que tu peux placer entre string et int.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string s;
    int i;
    s = s + i; // ne compile pas

  10. #10
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Par défaut
    Donc si veux obtenir
    toto: 0,1,2,3,4,5
    dans oss
    que dois je ecrire dans ma boucle for en utilisant le la variable i

    merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ostringstream oss;
    oss << "toto: ";
    int i
     
    for (i=0; i<=5;i=i+1)
    {
     
    }

  11. #11
    jmv
    jmv est déconnecté
    Membre chevronné Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par défaut
    quelque chose du style :

  12. #12
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Par défaut
    bon rien ne fonctionne, je ne peu meme pas compiler ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <string>
    #include <sstream>
     
    string fonct::param(const string& pat, int value)
    {
        ostringstream oss;
    ...
    }
    il n'aime pas le ostringstream oss;

  13. #13
    jmv
    jmv est déconnecté
    Membre chevronné Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par défaut
    Avec quoi tu compile ?
    as-tu mis "using namespace std;" en début de programme ?
    quels sont les messages d'erreurs ?

  14. #14
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Par défaut
    Je vais recommencer a zero
    voici le code initial que l'on ma donné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    string fonct::param(const std::string& pat, const std::string& value)
    {
    CString	msg;
    msg.format("%d params", tags.GetCount());
    return msg;
    }
    moi je voudrais repeter le "pat" et la "value" pour chaque params
    ex: resultat dans msg si 3 params:
    3 params
    pat: toto, value: 2
    pat: toto, value: 2
    pat: toto, value: 2
    que dois ecrire dans le for pour avoir mon exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    string fonct::param(const std::string& pat, const std::string& value)
    {
    CString	msg;
    msg.format("%d params", tags.GetCount()"
    int i;
    for (i = 0; i <= tags.GetCount()-1; i=i+1)
    {
       XXXXXXXXXXXXXXXX
    }
    return msg;
    }

  15. #15
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    STL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    #include <string>
    #include <sstream>
     
    using namespace std;
     
    string fonct::param(const std::string& pat, const std::string& value)
    {
       ostringstream ostrstr;
       ostrstr<<tags.GetCount()<<"params"<<std::endl;
       int i;
       for (i = 0; i <= tags.GetCount()-1; i=i+1)
       {
          ostrstr<<"pat "<<pat<< ", value: "<<value<<std::endl;
       }
       return ostrstr.str();
    }
    STL+MFC (non recommandé):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    string fonct::param(const std::string& pat, const std::string& value)
    {
       CString msg;
       CString str_pat_val;
       msg.format("%d params\n", tags.GetCount());
       str_pat_val.Format("pat %s, value: %d\n",par.c_str(),value);
       int i;
       for (i = 0; i <= tags.GetCount()-1; i=i+1)
       {
          msg+=str_pat_val
       }
       return msg;
    }

  16. #16
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Par défaut
    merci a vous

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/05/2009, 16h27
  2. Réponses: 2
    Dernier message: 26/04/2008, 10h13
  3. Réponses: 2
    Dernier message: 13/12/2006, 20h30
  4. Réponses: 6
    Dernier message: 12/10/2006, 18h30
  5. [POO] passage nom objet dsn les parametres d'une fonction
    Par melou dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 21/10/2005, 17h26

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