2012-09-14 4 views
0

J'ai un Generic::List(String^)^ myList et quelques valeurs std::string & myValue, et j'ai besoin de vérifier que les valeurs sont toutes contenues dans la liste. (Je ne veux pas ajouter de valeurs à la liste).comparaison de System :: String^à std :: string

Que dois-je faire à la place de myList->Contains(myValue) pour être sûr que je compare le contenu des chaînes?

Je sais que je peux utiliser InteropServices pour rassembler chaque élément de la liste.

Je pourrais convertir le Generic :: List en un tableau de cli :: si cela aiderait!

Merci Melanie

+0

Comparer des chaînes avec des encodages différents est une affaire amusante. Parfois, des personnages différents sont censés être égaux. Savez-vous si votre liste inclura des caractères non-ASCII? –

Répondre

0

De la documentation List<T>::Contains(T) (C documentation #, mais cela ne touche pas rien):

Cette méthode détermine l'égalité en utilisant le comparateur d'égalité par défaut, tel que défini par la mise en œuvre de l'objet de la méthode IEquatable.Equals pour T (le type de valeurs dans la liste).

Parce que String::Equals(String^) compare le contenu des chaînes, tout ce qui est nécessaire est le std::string à convertissent un System::String^. Vous pouvez le faire avec un marshal_as et vous devriez être bon.