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++/CLI Discussion :

String^ en string


Sujet :

C++/CLI

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 71
    Points : 47
    Points
    47
    Par défaut String^ en string
    Bonjour à vous,

    Je suis en train de concevoir une application sous Windows Forms, et je vois que le nom du fichier que je sélectionne est pris en String^, il me faudrait l'avoir plutôt en string pour pouvoir l'utiliser dans une autre partie de mon programme, pouvez vous m'aider à le "convertir" svp?

    Je vous remercie d'avance !

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    J'ai trouvé, il faut utiliser marshal_cppstd.h

  3. #3
    Membre habitué

    Inscrit en
    Février 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Février 2007
    Messages : 250
    Points : 162
    Points
    162
    Par défaut
    Si ça peut te servir :

    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
    // Fonction permettant de transformer une chaîne de System::String en std::string
    std::string ToStdString(String ^_strString)
    {
        IntPtr pString =  System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(_strString);
        std::string stdString((const char*) pString.ToPointer());
        System::Runtime::InteropServices::Marshal::FreeHGlobal(pString);
        return stdString;
    }
     
    std::string ToStdStringEOM(String ^_strString)
    {
        pin_ptr<const wchar_t> strWideString = PtrToStringChars(_strString);
        int iSizeString = (_strString->Length+1) * 2;
        char * pszBuffer = new char[iSizeString];
        int t = WideCharToMultiByte(CP_OEMCP, 0, strWideString, iSizeString, NULL, 0, NULL, NULL); 
        WideCharToMultiByte(CP_OEMCP, 0, strWideString, iSizeString, pszBuffer, t, NULL, NULL);
     
        std::string strRet(pszBuffer);
        delete []pszBuffer;
     
        return strRet;
    }

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par Feneck91 Voir le message
    Si ça peut te servir :
    <snip>
    Ce code est obsolète depuis que .Net 4.0 offre marshal_as (de marshal_cppstd.h), il n'est pas exception-safe, et n'utilise pas correctement le double-appel à WideCharToMultiByte() (qui aurait de toute façon pu être évité en utilisant un System::Text::Encoding).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2015, 15h56
  2. Comparaison d'une liste de string à un string
    Par maxazac dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/10/2005, 15h39
  3. [string] [float] string to float en sql
    Par chickenhuchette dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 17/06/2005, 11h47
  4. [String] pb fonction String[] split(String regex)
    Par Kyti dans le forum Langage
    Réponses: 6
    Dernier message: 05/04/2005, 13h06
  5. Problème de copie de string dans string
    Par kazarn dans le forum SL & STL
    Réponses: 17
    Dernier message: 15/03/2005, 18h35

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