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 régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    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 éminent
    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 : 38
    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
    Points : 8 389
    Points
    8 389
    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 confirmé 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
    Points : 603
    Points
    603
    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 régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    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 confirmé 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
    Points : 603
    Points
    603
    Par défaut
    Utilise std::ostringstream

  6. #6
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    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 confirmé 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
    Points : 603
    Points
    603
    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 régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    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 confirmé 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
    Points : 603
    Points
    603
    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 régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    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 confirmé 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
    Points : 603
    Points
    603
    Par défaut
    quelque chose du style :

  12. #12
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    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 confirmé 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
    Points : 603
    Points
    603
    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 régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    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
    Points : 13 017
    Points
    13 017
    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 régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    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