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

MFC Discussion :

Conversion CString vers string


Sujet :

MFC

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par d�faut Conversion CString vers string
    Bonjour,

    Pour un projet MFC sous Visual studio 2005, j'ai besoin de convertir des CString en String, et inversement.

    J'ai vu sur internet qu'on pouvait utiliser le code suivant :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    //Conversion de string en CString :
        CString MyCString(Mystring);                   // avec Mystring de type string.
     
    //Conversion de CString en string :
        string Mystring = MyCString.GetBuffer();   // avec MyCString de type CString.
    .

    Dans le premier cas, j'ai l'erreur suivante :
    error C2664: 'ATL::CStringT<BaseType,StringTraits>::CStringT(ATL::IAtlStringMgr *) throw()' : impossible de convertir le param�tre 1 de 'std::string' en 'ATL::IAtlStringMgr *'
    Dans le deuxi�me cas, j'obtiens un TCHAR au lieu d'un string

    Est ce qu'il existe d'autres moyens?
    Comment faire pour faire marcher ces deux lignes de code?

    Merci d'avance

  2. #2
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    avec Mystring.c_str();

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par d�faut
    Cette fois, j'ai :

    C2440: 'initialisation' : impossible de convertir de 'const char *' en 'ATL::CStringT<BaseType,StringTraits>'
    En fait, ta fonction renvoie un const char *, alors que je voudrais un string.

  4. #4
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    d'abord comment est param�tr� ton projet ? en unicode ?
    et indique aussi la version de ton visual , vc6 ou vc2005/2008 ?

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par d�faut
    D�sol�, mais je ne sais pas o� je peux voir �a (je d�bute).

    J'ai laiss� les options de compilation par d�faut il me semble, et j'utilise des TCHAR, donc je pense �tre en unicode, mais je ne suis pas s�r.

    Comment je peux v�rifier �a?

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par d�faut
    Dans les param�tres du projet, j'ai "utiliser le jeu de caract�res Unicode" (dans propri�t� de configuration/g�n�ral).
    Est ce que c'est ce que tu me demandais?

    edit : et j'ai visual studio 2005, comme pr�cis� dans mon premier message

  7. #7
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //Conversion de string en CString :
        {
        std::string Mystring="toto"; // multi-byte
        CStringA strA(Mystring.c_str());
        CString MyCString(strA);     // avec Mystring de type string. conversion unicode.
        }
        //Conversion de CString en string :
        CString MyCString=_T("toto"); // unicode
        CStringA strA(MyCString);      // multi-byte
        std::string Mystring =strA.GetBuffer();   // avec MyCString de type CString.
    as tu conscience que tu m�langes de l'unicode et du Multi-Byte ?
    par d�faut en unicode :
    CString c'est de l'unicode
    string c'est du multi-byte ,pour l'unicode c'est wstring.
    CStringA c'est du multi-Byte .
    d'ou les conversions dans mon code...

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par d�faut
    Merci pour ton aide, �a marche.

    Sinon, j'utilise des strings et non des wstring car je lis dans un fichier avec :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    std::ifstream fichier(fichierSignet, std::ios::in);
    if (fichier)
    {
    	fichier >> string1>> string2;
    	fichier.close();
    }
    Je ne peux pas mettre des wstring dans ce cas, sinon j'ai une erreur.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 17/08/2010, 12h49
  2. [C] Conversion wchar_t vers string
    Par therealmancool dans le forum Windows
    R�ponses: 4
    Dernier message: 04/04/2009, 20h24
  3. conversion hexadecimal vers string
    Par acognard dans le forum C#
    R�ponses: 1
    Dernier message: 16/10/2007, 16h30
  4. Conversion LPCTSTR vers string
    Par The Lord of Nesquik dans le forum C++
    R�ponses: 15
    Dernier message: 02/07/2006, 19h37
  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