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 :

C# List<String> to std::vector<std::string> marshal_as ?


Sujet :

C++/CLI

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 50
    Points : 46
    Points
    46
    Par défaut C# List<String> to std::vector<std::string> marshal_as ?
    Bonjour,
    j'ai un projet en C++ qui utilise des classes C#, je passe donc naturellement par le C++/CLI
    pour les types string, j'utilise la fonction marshal_as
    (#include "msclr\marshal_cppstd.h")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System::String^ stringManaged = marshal_as<System::String^, std::wstring>(string);
    conversion ok

    mais j'aimerais pouvoir faire une conversion entre une list managée
    List <System::String ^> ^ listManaged
    et un std::vector std::vector<std::string>.
    Mais marshal_as n'a pas l'air de supporter cela ?

    Des idées?

    Merci

  2. #2
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 50
    Points : 46
    Points
    46
    Par défaut
    J'ai crée une fonction qui permet de faire la conversion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    std::vector<std::wstring> MarshalListToVector(List< System::String^ >^ input)
    {
    	std::vector<std::wstring> output;
    	if(input == nullptr)
    		return output;
    	for each(System::String^ s in input)
    	{
    		output.push_back(marshal_as<std::wstring, System::String^>(s));
    	}
    	return output;
    }
    ca marche correctement

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Il pourrait être intéressant que ta fonction suive la convention de nommage de marshal_as, par exemple pour du code générique.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 29/09/2014, 17h12
  2. Cast d'un std::vector<T> -> std::vector<X>
    Par Dono_S dans le forum Langage
    Réponses: 3
    Dernier message: 09/04/2012, 21h31
  3. [Tuto] Recherche de tutoriel sur std::list et std::vector
    Par pegase06 dans le forum SL & STL
    Réponses: 27
    Dernier message: 24/07/2007, 16h23
  4. std::list, std::vector et allocation mémoire
    Par buzzkaido dans le forum SL & STL
    Réponses: 20
    Dernier message: 15/06/2007, 15h58
  5. std::sort() sur std::vector()
    Par tut dans le forum SL & STL
    Réponses: 20
    Dernier message: 05/01/2005, 19h15

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