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 :

[DEBUTANT]Convertion int vers Char*


Sujet :

C++

  1. #1
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut [DEBUTANT]Convertion int vers Char*
    Y a t il une fonction equivalente à "atoi"
    Transformer un numerique en chaine de caractere ?

  2. #2
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    Je ne crois pas qu'il y ait une telle fonction toute prête; tu peux te référer à cet article de la faq C++ pour voir leur méthode et l'adapter à tes besoins.

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Salut,

    Le plus facile, c'est, tout simplement l'utilisation de std::*stringstream et de std::string...(istringstream pour la convertion chaine-->n'importe quoi, ostringstream pour n'importe quoi-->chaine)

    Une fois que tu as ta std::string, si, vraiment, tu as besoin d'un char*, tu pourras toujours l'avoir avec la fonction membre c_str() de la classe string...

    Tu trouveras des exemples pour les convertion ==>sur cette page du site<==.

    Nota:
    • Il est vrai qu'on le répète à longueur de journée sur ce forum, mais, honnêtement, en C++, il est beaucoup plus simple d'utiliser la classe std::string pour la gestion de chaines de caractères que de commencer avec des chaines "C style" (tableau de caractères terminés par '\0')
    • les classes string et *stringstream font toutes les deux partie de l'espace de nommage std... les fichiers à inclure pour en profiter sont respectivement <string> et <sstream>
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    Ok merci koala01 et IrmatDen, vous m'avez envoyer vers le même type de tutorial, j ai suivi celui de Aurélien Regat-Barrel sur developpez.net.
    En suivant les conseils de koala j'ai fais ma propre function de log qui prend entre une string que je convertie ensuite en char *

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Citation Envoyé par magnus2005
    Ok merci koala01 et IrmatDen, vous m'avez envoyer vers le même type de tutorial, j ai suivi celui de Aurélien Regat-Barrel sur developpez.net.
    En suivant les conseils de koala j'ai fais ma propre function de log qui prend entre une string que je convertie ensuite en char *
    Mais ma question est: Pourquoi vouloir absolument le convertir en char*

    Pour une fonction log, utilise les std::ofstream pour l'écriture dans un fichier, et ca fonctionne tres bien avec des std::string et meme avec n'importe quel type de base (entier, reel, ...)

    Un code du genre de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    /* fonction log
       @in éventuellement le nom du fichier à utiliser
          les infos à écrire
    le prototype peut donc varier énormément, selon les infos à logguer ;)
    */
    void log(std::string fichier,std::string& chaine, int entier)
    {
        //le seul char* qu'il nous faille, c'est pour le nom du fichier
        //(je n'ai personnellement jamais compris pourquoi, dans ce cas précis,
        // la stl n'avait pas envisagé l'utilisation d'une string :P)
        std::ofstream ofs(fichier.c_str(),std::ios_base::app);
        ofs<<"entier: "<<entier<<" chaine: "<<chaine<<std::endl;
    }
    fonctionnera très bien (nécessite l'inclusion du fichier <fstream>)
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    En fait je dois utiliser une fonction qui prend LPSTR en parametre
    et quand je veux passer une "string" le compilateur
    me dit "impossible de convertir". Si j ai bien lu les header de LPSTR est un type de char*.

    Mais j'en conviens que c 'est pas génial.
    Je suis en train de passez un projet VC++6 qui date de 1997 et j'essaie d updater morceau par morceau.
    La je l ai passe sous VISUAL 2005 et j avance pas à pas.
    J'ai 2 soucis principaux :
    1. le code qui assez souvent obsolete (Ex : je suis en train de passer les winsock.h vers winsock2.h)
    2. Et je connais pas la logique de conception du projet.

  7. #7
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Une petite suggestion en passant...

    Si le projet est volumineux et que tu n'a pas moyen de retrouver des informations sur la logique (pas ou peu de commentaires, impossiblité de contacter l'auteur...), il pourrait sembler intéressant de passer par une étape de "reverse ingeneering"... ce qui est malgré tout beaucoup plus simple quand on a le code source

    L'idée de cette suggestion est qu'il est difficile de savoir oùù l'on va si on ne sait déjà pas d'où on part
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #8
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    Je suis ouvert à toutes suggestions pour me depetrer de ce ****.
    C est une bonne idée mais j ai pas vu l option UML dans ma version de visual studio


    Le projet n'est même pas estampillé est version final la derniere en une Release candidate. Alors j essaie dans 1 premier temps de faire fonctionner est remplaçant ce qui est desuet et en meme j essaie de m impregner de leur logique. avec une difficulte supplementaire la derniere fois que j ai fais du C++ c etait sous HP UNIX en 2000-2001. et qu habituellement je fais plutot du Java du javascript du PHP voir du .NET .
    (36 15 ma vie )
    il y a quelques commentaires sur de point tres precis mais rien sur les interactions entre les classes et il y a beaucoup de variable "global" et VISUAL studio ne trouve pas forcement les references (et moi je sais pas sur quoi elles agissent), et quand il trouve il me demande de lever l ambiguïté avec 2 ou 3 choix possible (une fois il m a donné 10).

  9. #9
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Ben, le meilleur moyen, selon moi, c'est encore la bonne vieille méthode du bloc de papier (sisi, ca existe encore) et du crayon...

    • Commence peut etre par trouver les appels des différentes fonctions (ex: dans A, on appelle B, C et D, dans B, on appelle E, F et G, dans C on appelle B, D et A...)
    • Continue en faisant l'inverse: trouver toutes les fonctions qui en appellent une précise (B est appelée par A, par C, et par Z)
    • Profites en pour repérer les appels spécifiques au fichier winsoks.h (et surtout dans quelle fonction elles sont appelée)
    • Fais pareil pour les différents define, enumérations, et autres constantes (essaie de repérer dans quel fichier ils sont définis)
    Il y a surement un ou deux trucs que j'ai oublié, mais ca te permettra déjà de voir un peu plus précisément les différentes implications, et vraissemblablement de repérer les éventuels conflits/ambiguités ...

    Un fois que tu aura repéré les grosses lignes, tu pourras passer à l'étude de la logique suivie dans les différentes fonctions, et peut etre meme voir des erreurs d'algorithme

    Le principe reste le meme: pour chaque fonction
    • premiere ligne, on fait ca
    • deuxième ligne, on ...
    • troisième ligne, on...
    • puis on teste (...)
    • on entre dans la boucle qui a pour but (...)
    • ...

    Si le code est bien commenté, n'hésite pas à te baser sur les commentaires pour en améliorer ta compréhension

    Evidemment, ca peut (doit) aussi etre fait au niveau des classes (héritage, membres ...)

    Il faut bien etre conscient qu'il y a relativement peu de chances que tu puisse en arriver à une étude UML complete... et que ca risque de prendre, mettons, un temps certains

    Mais tout ce qui aura été fait sur papier sera de nature à te rendre la vie plus simple quand tu retourneras à ton clavier
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  10. #10
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Je suis honteux de ne pas y avoir pensé plus tot, parce que je l'utilise régulièrement ...

    Un petit utilitaire qui pourrait te faciliter énormément la tache pour retrouver un peu tes jeunes, c'est doxygen...

    Il permet de créer la documentation de projet, dont, entre autres, certains graphiques de dépendances/héritage/dérivation/appel...

    Si tu le couple avec graphviz, ca devient franchement sympa
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  11. #11
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    Merci pour l'info.

    Cela semble bien orienté sur que j ai bien besoin.

    Je l ai installé j ai lu la doc
    il me fait fait bien quelque warning sur le code C++.

    Pour le moment il me fait seulement une sortie XML de 18 Mo
    le HTML et le RTF sont bien crée mais il a juste le modele vide dedans il y a pas de reference au code.

    Je continue de chercher.

    Merci pour tes conseils.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 80
    Par défaut tab de char
    bonjour
    je ne connais pas encore les classe string et je souffre vraiment
    enfin j'ai utiliser un tableau de char [100]
    bon voila mon probleme c'est que quand j'affiche le contenu de la chaine ça donne une valeur ironé
    svp donner moi un liens ou je trouve les classe string détaillé et facile pour que je puisse faire mon job


    //declaration des structures et des types utilises dans notre programme
    #define max 100
    typedef int bool ;

    struct arc
    { char alph[max] ;int x;int y; arc*next;};
    void affch_arc(arc*pa); //Afficher le contenu de la list des arecs
    arc* ajout_arc(arc* &rt_arc,char alfb[max],int x1,int x2); //ajouter un arc
    //le programme principal

    void main()
    {
    arc* t_arc,*arcc;
    int choix,choix1,de_x,vers_y;
    char alphabet[max];

    swich(choix)
    {

    case 2:
    cout<<"donner l'alphabet de transision "; cin>> alphabet[max];
    cout<<endl<<" donner le sommet 1"; cin>>de_x;
    cout<<endl<<" donner le sommet 2"; cin>>vers_y;
    arcc=ajout_arc(t_arc,alphabet[max],de_x,vers_y); goto bcl;
    affch_arc(arcc);



    }

  13. #13
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Citation Envoyé par clubinfo
    bon voila mon probleme c'est que quand j'affiche le contenu de la chaine ça donne une valeur ironé
    t_arc et arcc ne sont pas alloués
    Citation Envoyé par clubinfo
    svp donner moi un liens ou je trouve les classe string détaillé et facile pour que je puisse faire mon job
    Google: "C++ string"?

    Au passage:
    > les balises code sont utiles
    > ton code ressemble presqu'au résultat d'un concours d'obfuscation: les sauts à la ligne et l'indentation ne mange pas de pain...

    Edit: au fait: rapport avec le post original?

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 80
    Par défaut peut etre vous m'avez mal compris
    bjr
    j'ai sauter des lignes , ces lignes presentait l'allocation de t_arc
    j'ai changé l'idée puisque je n'ai pas trouver l'erreur j'ai utiliser une une liste dynamique qui contient un char ça va m'aider plus pour sa gestion
    dans le programme précedant il donne un resultat erroné dans la boucle switch mais si j'utilise ailleur l'affichage ça ne poser aucun problem bizarrrrrrr
    merci

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

Discussions similaires

  1. String vers Int vers Char
    Par lea436 dans le forum C#
    Réponses: 3
    Dernier message: 14/08/2011, 13h48
  2. CONVERT int vers varchar
    Par Wiwi31 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/02/2011, 09h45
  3. super debutant, converitir int to char
    Par am@123 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/02/2007, 19h53
  4. De int et long vers char*
    Par olivier857 dans le forum C++
    Réponses: 27
    Dernier message: 23/06/2006, 16h23
  5. Réponses: 2
    Dernier message: 24/03/2006, 10h46

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