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 :

Conversion wchar_t ** vers char**


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut Conversion wchar_t ** vers char**
    Bonjour à tous et toutes !
    J'ai un code, dans lequel mes arguments de la ligne de commande (argv) sont déclarés :
    Mais le truc, c'est que derrière, j'ai un tas de fonctions qui utilisent argv mais déclaré :
    Du coup, j'aimerais bien convertir une seule fois toute la ligne, et pas aller dans chaque fonction et rajouter une série de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #ifdef 
    ...
    #else 
    ...
    #endif
    J'ai essayé d'utiliser wcstombs(), mais je galère.
    Je suis sûr que c'est assez simple, mais je n'y arrive pas.

    Merci d'avance !

  2. #2
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    Deja wchar_t *argv[] c'est pareil que wchar_t **argv
    Si tu veut les modifier tu dois faire une boucle sur le nombre d'argument:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char stringOut[MAX_SIZE];
    for (int i=0; i<argc; i++ )
        wcstombs( stringOut, argv[i], wcslen(argv[i]));

  3. #3
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Dans ce cas, l'appel à la fonction doit être différent, car j'ai une fonction qui prend :
    Or, stringout est de type char*, non ?

  4. #4
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Bon, j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char *argi[10]={"","","","","","","","","",""};
      size_t copied;
      size_t len;
      for (int i=0 ; i < argc ; i++)
      {
    	  len = wcslen(argv[i]);
    	  copied = wcstombs(argi[i], argv[i], len);
      }
    Mais ça ne fonctionne pas. Exemple de ce qu'il se passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    argv[0]="c:\test\test.exe"
    argv[1] = "argument"
    En sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    argi[0]="c:\test\test.exe"
    argi[1]="argumenttest.exe"
    On voit qu'il y a un soucis...

    J'aimerais bien utiliser new[] pour argi, mais je n'y arrive pas.
    La solution est surement simple, si vous pouvez me montrer mon erreur ??

  5. #5
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    OK, j'ai résolu mon problème, j'ai oublié d'ajouter 1 à la longueur de la chaine à convertir...

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ce que tu fais est dangereux, car les éléments de argi pointent sur des chaînes constantes où tu n'as pas le droit d'écrire en théorie. Donc en gros, ça ne plante pas parce que tu as de la chance.

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

Discussions similaires

  1. Conversion wchar_t * vers char *
    Par didierll dans le forum C++
    Réponses: 5
    Dernier message: 16/04/2007, 16h28
  2. Conversion wxString vers char* bizarre.
    Par bustaja dans le forum wxWidgets
    Réponses: 9
    Dernier message: 13/04/2007, 16h52
  3. Conversion String vers char
    Par benwit dans le forum Langage
    Réponses: 27
    Dernier message: 30/03/2007, 14h01
  4. conversion gchar vers char
    Par shito dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 16/01/2007, 20h09
  5. [MFC] Problème de conversion CString vers Char *
    Par Darkenshin dans le forum MFC
    Réponses: 10
    Dernier message: 02/12/2005, 14h42

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