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 :

De int et long vers char*


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 170
    Par défaut De int et long vers char*
    Bonjour à tous,

    j'ai un programme avec les 4 variables suivante :

    int num_site, num_pm;
    long num_dossier, num_carte;


    que je voudrai transformer en char* :

    char *var2, *var3, *var4, *var5;


    et ajouter à la suite de chaine déjà existante :

    char *chaine2, *chaine3,* chaine4, *chaine5;

    chaine2="NumSit=";
    chaine3="NumDos=";
    chaine4="NumCar=";
    chaine5="NumPm=";


    Donc je veux transformer mes 2 int et 2 long en char* (var2, var3, var 4, var5) et les concaténer avec mes chaine2 à chaine5.

    Je n'y arrive pas.
    Merci de votre aide.

  2. #2
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Utilise des std::string en C++ tu te simplifieras la vie. Pour la conversion tout est dans la : http://c.developpez.com/faq/cpp/?pag...RINGS_numtostr

    Si après tu as besoin de char, tu peux récupérer le pointeur de caractères avec la méthode c_str() de std::string (tout est dans la FAQ aussi).

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Pourquoi des char* et pas des std::string ? La concaténation est automatique dans ce cas. Et pour automatiser tout ce qui est dans la FAQ, il y a aussi Boost.Conversion : http://miles.developpez.com/tutoriel...st/conversion/

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 170
    Par défaut
    Alors des char*, pourquoi ?

    Tout simplement parceque ca va être des variables que j'envoie en paramètre à une fonction en C. En fait mes paramètre char* vont ensuite dans un char** que j'envoie en paramètre dans le "char** argv" du main d'une fonction C.

    Voilà le pourquoi


    Je ne veu donc pas convertir en string mais bien en char*.

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Tu appelles une fonction main d'un programme en C ???

  6. #6
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Je ne veu donc pas convertir en string mais bien en char*.
    On peut convertir une "string" C++ en "char*" C avec la méthode "c_str()".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string s1("abcde");
    const char* s2=s1.c_str();

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 170
    Par défaut
    Citation Envoyé par Miles
    Tu appelles une fonction main d'un programme en C ???
    Non, j'ai était un peu vite dans l'explication. C'est pas la fonction main, c'était juste pour imager.
    C'est une fonction en C mais pas le main puisque l e main est en c++, c' est la fonction dans laquelle je fait la convertion. Biensur la fonction C est dans un autre fichier.

    La fonction C est celle-ci : int post(int argc, char** argv);

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Est-ce qu'elle peut être re-prototypée comme suit ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int post(int argc, char const* const * argv);
    Si oui, tu peux utiliser directement le contenu des std::string avec la fonction membre c_str().
    Sinon, un petit strdup() du header <cstring> suffira à te donner une copie des chaînes...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Citation Envoyé par olivier857
    Tout simplement parceque ca va être des variables que j'envoie en paramètre à une fonction en C.
    Citation Envoyé par Fiquet
    Si après tu as besoin de char, tu peux récupérer le pointeur de caractères avec la méthode c_str() de std::string (tout est dans la FAQ aussi).
    Comme ça tu pourras convertir facilement avec les streams, et concaténer en faisant +, et enfin envoyer dans la fonction C avec la fonction c_str(). Si vraiment tu as besoin d'une chaîne modifiable, il faut faire une copie. Voir http://c.developpez.com/faq/cpp/?pag...TRINGS_to_char .

Discussions similaires

  1. [DEBUTANT]Convertion int vers Char*
    Par magnus2005 dans le forum Débuter
    Réponses: 13
    Dernier message: 01/04/2007, 11h15
  2. [question] cast de long vers int
    Par Faiche dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2006, 10h22
  3. Réponses: 2
    Dernier message: 24/03/2006, 10h46
  4. LONG RAW vers CHAR
    Par morti dans le forum Oracle
    Réponses: 8
    Dernier message: 31/12/2005, 14h21
  5. Réponses: 1
    Dernier message: 20/12/2005, 17h51

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