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 char * vers wchar_t


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 65
    Points : 33
    Points
    33
    Par défaut Conversion char * vers wchar_t
    Bonjour,
    J'essaie de faire un programme en C++ avec Visual Studio 6 qui permet de convertir un char * en wchar *.
    Voici le code :
    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
    18
    19
    20
    21
    22
    23
    24
    #include <string>
    #include <iostream>
    void wsubstring(wchar_t *dest, const wchar_t *src, const int from, const int length)
    {
          int i;
          for (i=0; i<length; i++)
             dest[i] = src[i+from];
          dest[i] = '\0';
    }
     
    void charToWchar(char *in, wchar_t *out)
    {
       std::use_facet< std::ctype<wchar_t> >(std::locale()).widen(in,in+strlen(in),out);
       wsubstring(out, out, 0, strlen(in));
    }
     
    int main(void)
    {
       char in[255] =  "coucou ca vas";
       wchar_t out[255];
       charToWchar(in, out);
       std::wcout << out << "\n";
       return 0;
    }
    Seulement, j'obtient 2 erreurs pour la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::use_facet< std::ctype<wchar_t> >(std::locale()).widen(in,in+strlen(in),out);
    quand je compile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    error C2780: 'const _F &__cdecl std::use_facet(const class std::locale &,const _F *,bool)' : expects 3 arguments - 1 provided
     
    error C2228: left of '.widen' must have class/struct/union type
    Je n'arrive pas à trouver la cause de ces erreurs. Merci pour votre aide.

  2. #2
    Membre actif Avatar de Grulim
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 234
    Points : 288
    Points
    288
    Par défaut
    c'est bizarre, en VC7 la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::use_facet< std::ctype<wchar_t> >(std::locale()).widen(in,in+strlen(in),out);
    compile sans erreur !

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2002
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 120
    Points : 125
    Points
    125
    Par défaut
    Apparament VC6 ne gère pas très bien les templates.

    Dans un code (http://cvs.sourceforge.net/viewcvs.p...ream.h?rev=1.6), j'ai trouvé ceci::

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #if !(_MSC_VER < 1300)
        const std::codecvt<charT, fromCharT, typename traitsT::state_type>& cvt =
          std::use_facet<std::codecvt<charT, fromCharT, typename traitsT::state_type> >(this->getloc());
    #else
        const std::codecvt<charT, fromCharT, traitsT::state_type>& cvt =
          std::use_facet(stringbuf_.getloc(), (std::codecvt<charT, fromCharT, traitsT::state_type>*)0, true);
    #endif
    Essai de l'adapter à ton code

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Je te conseile aussi de voir le programme qu'avait donné Musaran en 2002 dont voici la copie

    Il passe sans problème en VC6.0
    Mais curieusement pas en Dev-C++ si quelqu'un peut me donner la solution !!!!

    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
    18
    19
    20
    21
    22
    #include <iostring>
    #include <string> 
    #include <algorithm> 
    using namespace std; 
     
    int main(){ 
       string nstr("Bonjour"); 
       cout << nstr; 
     
       wstring wstr(L" Monde !\n"); 
       wcout << wstr; 
     
       string nstr2("Au revoir"); 
       copy(nstr2.begin(), nstr2.end(), wstr.begin()); 
       wcout << wstr; 
     
       const char* pc= " tout le monde !\n"; 
       copy(pc, pc+strlen(pc), wstr.begin()); 
       wcout << wstr; 
     
       return 0; 
    }
    [Balises [code] ajoutées par Aurélien, merci d'y penser]

  5. #5
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 703
    Points
    10 703
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par ShootDX
    Apparament VC6 ne gère pas très bien les templates.
    C'est même une certitude. VC++ 6 est très vieux.

    je pense qu'il s'agit plutot de <iostream>.

Discussions similaires

  1. Problème de conversion char vers binary
    Par uuioga dans le forum PL/SQL
    Réponses: 1
    Dernier message: 01/11/2012, 08h24
  2. Conversion char vers number (to_number)
    Par manas dans le forum SQL
    Réponses: 5
    Dernier message: 24/02/2011, 15h39
  3. conversion - char to wchar_t
    Par olobraecky dans le forum Débuter
    Réponses: 7
    Dernier message: 03/10/2008, 11h46
  4. Probléme de conversion char vers datetime
    Par locs dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 28/02/2007, 15h29
  5. [Clé de registre] Conversion char* vers unsigned char*
    Par The Lord of Nesquik dans le forum C
    Réponses: 7
    Dernier message: 03/07/2006, 23h30

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