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

Langage C++ Discussion :

Convertir char* en string sous Linux ?


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 30
    Par défaut Convertir char* en string sous Linux ?
    Bonjour,

    J'ouvre ce topic car j'ai un nouveau soucis que je suis incapable de régler seul.
    Nous avons développé un petit programme qui prend quelques arguments en ligne de commande, pour gérer cela, j'utilise la fonction getopt. Celle ci se contente de donner un traitement et un accès simplifié aux arguments.

    Ceux ci sont renvoyés en tant que char *.

    Nous développons sous windows, avec codeblocks, et compile avec mingw.

    Le code récupère les arguments de la ligne de commande et les met dans des string, ainsi il fait:

    string toto = optarg
    string tata = argv[optind]
    etc ....

    Problème, une fois sous linux (compilation avec gcc), ceci génère à l'exécution une erreur logique.
    On a pu identifier que l'erreur logique survient exactement lors de l'instanciation de la chaine de caractère a partir du char *.

    On a bien essayé:
    char * totoch = optarg;
    string toto(optarg) // string* toto = new string(optarg)

    Mais rien n'y fait.

    Je n'ai aucun moyen de développer avec un IDE sous Linux, et de débugger sous Linux, on fait tout en ligne de commande (avec des makefile pour la compilation).
    Aussi si une personne expérimentée pouvait nous aider sur ce coup là, ça serait vraiment apprécié

  2. #2
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Ton char * ne serait-il pas NULL, par hasard ?
    Sinon, finit-il bien par un \0 ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 30
    Par défaut
    Non le char n'est pas NULL ça c'est certain.
    Enfin, en tous cas il n'est pas NULl quand je lance le programme sous windows, car le programme fonctionne parfaitement.

    Pour le \0 c'est une très bonne question, j'avoue que je suis parti du principe que le char* crée par getopt l'avait forcément .... je vais en rajouter un d'office... si je me rappelle comment rajouter un caractère à un char*

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 30
    Par défaut
    A priori cela ne vient pas du \0 ;(

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 30
    Par défaut
    Bonjour,

    Je viens de constater que les compilateurs qui nous sont fournis sous LINUX sont gcc en version 4.3.0 (avril 2008).
    Sur chacun de nos exercices nos rencontrons des problèmes de non fonctionnement.

    De mon côté je compile les programmes avec gcc 4.5.2 directement sous windows mais également avec minSYS mais du coup, je suis incapable de faire une compilation linux et une exécution avec le bon compilateur !
    Merci !

  6. #6
    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
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string tata = argv[optind]
    optind<argc ?? C'est vérifié partout ?


    Peux-tu simplement poster le code d'analyse de ton argv/argc et la construction de tes chaînes de caractère. Car là tu ne fournis pas assez de code pour vraiment se rendre compte.

Discussions similaires

  1. Convertir char ou String en Int
    Par Invité(e) dans le forum ASP
    Réponses: 2
    Dernier message: 10/06/2008, 16h17
  2. Convertir Char* en String
    Par Blunt dans le forum C++/CLI
    Réponses: 1
    Dernier message: 01/07/2007, 16h46
  3. Convertir char* en string
    Par KorTeX22 dans le forum C++
    Réponses: 5
    Dernier message: 13/03/2007, 11h54
  4. convertir un char * en string
    Par Seij dans le forum C++
    Réponses: 5
    Dernier message: 08/03/2006, 22h23
  5. Réponses: 12
    Dernier message: 31/01/2006, 21h46

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